年前我结合小白接口和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,需要添加以下伪静态规则以便于接口请求。
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]
由于在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增加一个注册接口,并写好备注以便系统自动生成接口文档。
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
insert($newData);//调用model层的insert方法
}
}
在model层建立相应文件。
getORM(); // 在Model子类内,进行数据库操作前,先获取NotORM实例
$user->insert($newData);//调用notrom中封装的insert方法
return $user->insert_id();
}
}
框架自动生成的接口文档在public/docs.php下,还提供了方便的在线调试功能。
试一下进行在线请求模拟
看一下数据库的相应数据