PHP學習筆記——Phalapi開發app接口

背景

年前我結合小白接口和vue進行了開發,利用小白接口作爲自己的應用後端支持。同時我一直在尋找一個合適的PHP框架,作爲api後臺,我對比了幾款主流框架,laravel、tp、yaf和phalapi。最終還是覺得phalapi是最適合我的項目的後端的,當然也有小白接口的原因,用過小白接口對phalapi自然更熟悉一點。

今天這篇筆記主要記錄以下知識點:phalapi的安裝部署、一個完整的數據庫操作的接口、phpstorm安裝和服務器同步設置及postman安裝。

框架安裝

我安裝的是最新的2.4.2版本,採用composer安裝,composer在我安裝寶塔面板時已經帶上了,因此可以直接cd項目目錄下使用如下命令:composer create-project phalapi/phalapi等待幾分鐘即可。

我的websever是apache,需要添加以下僞靜態規則以便於接口請求。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /

    RewriteCond %{HTTP_HOST} ^dev.phalapi.net$

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteCond %{REQUEST_URI} !^/phalapi/public/
    RewriteRule ^(.*)$ /phalapi/public/$1
    RewriteRule ^(/)?$ index.php [L]
</IfModule>

由於在ssh端口我用的是root用戶,因此訪問默認接口請求時出現了權限不足的報錯提示,使用如下命令解決更改項目目錄及文件權限和所有者爲www。

在這裏插入圖片描述
在這裏插入圖片描述
主要命令爲chmod -R a+rx *,chown -R www:www *

配置完成後再次訪問默認接口,不再報錯,說明框架已安裝成功。
框架安裝成功

開發及調試工具

phpstorm是一款專門爲php開發者而生的輕量IDE,最方便的是自動與遠程服務器對比更新的功能。安裝過程不贅述,簡單記錄一下遠程同步的配置。

首先在服務器開啓一個ftp綁定服務器項目根目錄,然後在phpstorm中,進行以下步驟:

  • 第一步,打開同步配置

在這裏插入圖片描述

  • 二步,添加服務器鏈接配置

在這裏插入圖片描述

  • 第三步,設置 IP、賬戶密碼等服務器鏈接配置
    在這裏插入圖片描述

  • 進一步配置項目根目錄,並完成配置
    在這裏插入圖片描述
    此時,phpstorm便會將本地的文件與服務器進行實時同步了,更方便部署遠端項目。

postman是一款專門調試api的工具,有谷歌瀏覽器插件版,也有windows下的exe版,安裝及使用單獨開文記錄。

我的第一個完整數據庫接口

phalapi框架採用的是ADM結構,即Api、Domain(業務邏輯層)、Model(數據操作層),獨立寫一個完整的添加數據的接口(這裏以註冊接口爲例)能增強對這種結構的理解。

配置數據庫連接文件

在開始之前我們先要配置好數據庫連接文件,文件位置在./config/dbs.php,默認配置爲

return array(
    /**
     * DB數據庫服務器集羣
     */
    'servers' => array(
        'db_master' => array(                         //服務器標記
            'host'      => '127.0.0.1',             //數據庫域名
            'name'      => 'phalapi',               //數據庫名字
            'user'      => 'root',                  //數據庫用戶名
            'password'  => '',                      //數據庫密碼
            'port'      => 3306,                  //數據庫端口
            'charset'   => 'UTF8',                  //數據庫字符集
        ),
    ),

    /**
     * 自定義路由表
     */
    'tables' => array(
        //通用路由
        '__default__' => array(
            'prefix' => 'tbl_',
            'key' => 'id',
            'map' => array(
                array('db' => 'db_master'),
            ),
        ),
    ),
);

在數據庫中建立相應的數據表,注意前綴要和這裏的prefix相同,如果不同則需要手動建立model層與數據表的聯繫。

註冊接口實例

首先我們在默認應用模塊app下的User.php增加一個註冊接口,並寫好備註以便系統自動生成接口文檔。

<?php
namespace App\Api;//聲明命名空間

use PhalApi\Api;//引入框架類
use App\Domain\User as DomainUser;//引入domain層
/**
 * 用戶模塊接口服務
 */
class User extends Api {
    public function getRules() {//框架接收請求數據規則,框架根據下面的數組數據生成各個接口的參數文檔
        return array(
            'register' => array(
                'username' => array('name' => 'username', 'require' => true, 'min' => 1, 'max' => 50, 'desc' => '用戶名'),
                'password' => array('name' => 'password', 'require' => true, 'min' => 6, 'max' => 20, 'desc' => '密碼'),
            ),
        );
    }
/**
     * 註冊接口
     * @desc 根據賬號和密碼進行註冊操作
     *
     * @return int id 用戶註冊ID
     */
    public function register() {
        $rs = array();//返回類型儘量爲可拓展類型的,如數組、對象

        $newData = array(
            'username' => $this->username,
            'password' => $this->password,
    );

        $domain = new DomainUser();//實例化domain層的對象

        $id = $domain->insert($newData);//調用domain層的insert方法並接收返回數據

        $rs['id'] = $id;
        return $rs;
    }
} 

其後完善domain層的文件,文件位置爲app/domain/User.php

<?php
namespace App\Domain;//聲明命名空間

use App\Model\User as ModelUser;//引入model層

class User {

    public function insert($newData) {
        $newData['post_date'] = date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']);//生成註冊時間,數據庫中對應字段記錄用戶註冊時間

        $model = new ModelUser();//實例化model層數據庫操作對象
        return $model->insert($newData);//調用model層的insert方法
    }
}

在model層建立相應文件。

<?php
/**
 * Created by PhpStorm.
 * User: 14680
 * Date: 2019/2/7
 * Time: 22:01
 */

namespace App\Model;//聲明命名空間

use PhalApi\Model\NotORMModel as NotORM;//引入框架封裝的數據庫操作類庫notorm

class User extends NotORM {
    public function register($newData) {

        $user = $this->getORM();  // 在Model子類內,進行數據庫操作前,先獲取NotORM實例
        $user->insert($newData);//調用notrom中封裝的insert方法
        return $user->insert_id();
    }
}

看看效果

框架自動生成的接口文檔在public/docs.php下,還提供了方便的在線調試功能。

在這裏插入圖片描述
註冊接口詳情

在這裏插入圖片描述

試一下進行在線請求模擬

在這裏插入圖片描述
可看到如下返回結果,說明接口已經生效

在這裏插入圖片描述

看一下數據庫的相應數據

在這裏插入圖片描述
第一條接口開發完成!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章