大家好,欢迎来到IT知识分享网。
背景
年前我结合小白接口和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下,还提供了方便的在线调试功能。
注册接口详情
试一下进行在线请求模拟
可看到如下返回结果,说明接口已经生效
看一下数据库的相应数据
第一条接口开发完成!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137703.html