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下,还提供了方便的在线调试功能。

在这里插入图片描述
注册接口详情

在这里插入图片描述

试一下进行在线请求模拟

在这里插入图片描述
可看到如下返回结果,说明接口已经生效

在这里插入图片描述

看一下数据库的相应数据

在这里插入图片描述
第一条接口开发完成!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值