有梦想的人学习能力特别强,而且不拒绝任何新东西。 — 《理想丰满》

1.2.1 可视化安装

将代码上传到服务器并解压后,访问: ./Public/install/ 下的安装向导,如在浏览器打开:

  1. http://dev.phalapi.com/install/

然后按照提示,一步步操作即可:

(0)第零步:同意安装

a pic

(1)第一步:环境检查

a pic

(2)第二步:系统配置

a pic

(3)第三步:接口请求

a pic

(4)运行效果

a pic

1.2.2 手动创建

在Windows系统下,可以手动创建一个新的项目。

假设目录为: F:\xampp\htdocs\PhalApi以下是简单的创建操作:

(1)新建项目目录

在./PhalApi目录下新建一个自己的项目目录,通常以项目名称命名,如项目MyApp对应:

QQ截图20150404004219

然后,再分别在里面添加接口目录Api、领域目录Domain、数据源目录Model和通用目录Common,即:

QQ截图20150404004458

(2)准备一个接口

全部的接口类文件需要放置到./Api 目录下,你可以尝试编写一个简单的Default.Index接口,也可以直接将./Demo/Api/Default.php文件复制过来。

(3)创建访问入口

将./Public/demo目录复制一份为对应项目名称小写的目录,如这里的myapp:

QQ截图20150404004653

注意!这里需要修改./Public/myapp/index.php和./Public/myapp/checkApiParams.php中的目录:

QQ截图20150404004731

(4)浏览器访问

在浏览器输入以下链接:

  1. http://localhost/phalapi/Public/myapp/

应该可以看到:

QQ截图20150404004959

1.2.3 自动生成

在Linux系统下,我们可以使用脚本快速生成一个项目结构,此过程只需要1分钟左右。

简明操作如下:

(1)使用phalapi-buildapp脚本

phalapi-buildapp脚本用于创建项目,进入 ./PhalApi/PhalApi/ 后,可以看到这个脚本。

不过,首先,需要为这个脚本添加执行权限:

  1. $ chmod +x ./phalapi-buildapp

然后,调用脚本创建一个MyApp的项目:

  1. $ ./phalapi-buildapp MyApp
  2. OK!

(2)查看生成的项目及访问

回到 /path/to/PhalApi 目录,你会发现生成了一个MyApp目录,并且里面的文件如下:

  1. $ cd MyApp/
  2. $ tree
  3. .
  4. ├── Api
  5. └── Default.php
  6. ├── Common
  7. ├── Domain
  8. ├── Model
  9. └── Tests
  10. ├── Api
  11. └── Api_Default_Test.php
  12. ├── Common
  13. ├── Domain
  14. ├── Model
  15. ├── phpunit.xml
  16. └── test_env.php
  17. 9 directories, 4 files

在Public目录下,则会有myapp的访问入口:

  1. └── myapp
  2. ├── checkApiParams.php
  3. └── index.php

在浏览器访问:

  1. #根目录设置为./Public
  2. http://dev.phalapi.com/myapp/
  3. #或没设置根目录为./Public时访问
  4. http://dev.phalapi.com/Public/myapp/

可以看到接口结果输出。

(3)执行单元测试

如果安装了PHPUnit,执行一下单元测试,也是通过的!

  1. $ phpunit ./Tests/
  2. PHPUnit 4.3.4 by Sebastian Bergmann.
  3. ...
  4. Time: 7 ms, Memory: 5.75Mb
  5. OK (3 tests, 13 assertions)

1.2.4 更多技巧

(1)日记目录需要0777权限

请确保日记目录Runtime拥有写入的权限,可以给0777 。

(2)脚本加执行权限和软链

对于脚本命令,需要添加执行权限和软链,便于日后使用:

  1. $ cd /pah/to/PhalApi/PhalApi
  2. $ chmod +x ./phalapi-buildapp
  3. $ sudo ln -s /path/to/phalapi-buildapp /usr/bin/phalapi-buildapp
  4. $ chmod +x ./phalapi-buildsqls
  5. $ sudo ln -s /path/to/phalapi-buildsqls /usr/bin/phalapi-buildsqls
  6. $ chmod +x ./phalapi-buildtest
  7. $ sudo ln -s /path/to/phalapi-buildtest /usr/bin/phalapi-buildtest

(3)No such file or directory的解决方案

解决方案一:增加 /usr/bin/php软链

可以将php的执行路径追加到/usr/bin下,即类似:

  1. ln -s /usr/local/php/bin/php /usr/bin/php

解决方案二:使用alias起别名

或者通过使用别名 alias 的方式来注册脚本命令:

  1. # vim /etc/bashrc
  2. #PhalApi - 自动生成SQL语句
  3. alias phalapi-buildsqls='/usr/local/php/bin/php /path/to/PhalApi/phalapi-buildsqls'

需要注意的是,保存后,需要source一下,即:

  1. # source /etc/bashrc
  2. $ source /etc/bashrc

1.2.5 四个脚本命令使用说明

(1) 创建应用项目

如前文所述,可以通过phalapi-buildapp脚本来创建一个新的项目,其使用说明如下:[1.2] 创建一个自己的项目(含四个脚本命令的使用说明) - 图11

(2)生成单元测试骨架代码

当需要对某个类进行单元测试时,可使用phalapi-buildtest脚本生成对应的单元测试代码,其使用如下:[1.2] 创建一个自己的项目(含四个脚本命令的使用说明) - 图12

其中,

  • 第一个参数file_path:是待测试的源文件相对/绝对路径
  • 第二个参数class_name:是待测试的类名
  • 第三个参数bootstrap:是测试启动文件,通常是./test_env.php文件
  • 第四个参数author:你的名字,默认是dogstar
    通常,可以先写好类名以及相应的接口,然后再使用此脚本生成单元测试骨架代码。以Default.Index默认接口服务为例,需要为此生成测试骨架代码,可以依次这样操作:
  1. $ cd /path/to/PhalApi
  2. $ cd ./Demo/Tests
  3. $ ../../PhalApi/phalapi-buildtest ../Api/Default.php Api_Default ./test_env.php > ./Api/Api_Default_Test.php

最后,需要将生成好的代码,重定向保存到你要保存的位置。通常与产品代码对齐,并以“{类名} + _Test.php”方式命名。

(3)生成数据库建表SQL

当需要创建数据库表时,可以使用phalapi-buildsqls脚本结合配置文件dbs.php生成建表SQL,这个工具在创建分表时尤其有用,其使用如下:[1.2] 创建一个自己的项目(含四个脚本命令的使用说明) - 图13

其中,

  • 第一个参数dbs_config:是指向数据库配置文件./Config/dbs.php的路径,可以使用相对路径
  • 第二个参数table:是需要创建sql的表名,每次生成只支持一个
  • 第三个参数engine:(可选)是指数据库表的引擎,可以是:Innodb或者MyISAM
温馨提示:需要提前先将建表的SQL语句(除主键id和ext_data字段外)放置到./Data/目录下,文件名为:{表名}.sql。

如,我们需要生成10用户user_session表的的建表语句,那么需要添加数据文件./Data/user_session.sql(除主键id和ext_data字段外):

  1. `user_id` bigint(20) DEFAULT '0' COMMENT '用户id',
  2. `token` varchar(64) DEFAULT '' COMMENT '登录token',
  3. `client` varchar(32) DEFAULT '' COMMENT '客户端来源',
  4. `times` int(6) DEFAULT '0' COMMENT '登录次数',
  5. `login_time` int(11) DEFAULT '0' COMMENT '登录时间',
  6. `expires_time` int(11) DEFAULT '0' COMMENT '过期时间',

然后,进入到项目根目录,执行命令:

  1. $ php ./PhalApi/phalapi-buildsqls ./Config/dbs.php user_session

就会看到生成好的SQL语句了,类似:

  1. CREATE TABLE `phalapi_user_session_0` (
  2. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  3. ... ...
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  6. CREATE TABLE `phalapi_user_session_1` (
  7. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  8. ... ...
  9. `ext_data` text COMMENT 'json data here',
  10. PRIMARY KEY (`id`)
  11. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  12. CREATE TABLE `phalapi_user_session_2` (
  13. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  14. ... ...
  15. `ext_data` text COMMENT 'json data here',
  16. PRIMARY KEY (`id`)
  17. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  18. CREATE TABLE `phalapi_user_session_3` (
  19. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  20. ... ...
  21. `ext_data` text COMMENT 'json data here',
  22. PRIMARY KEY (`id`)
  23. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  24. CREATE TABLE `phalapi_user_session_4` (
  25. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  26. ... ...
  27. `ext_data` text COMMENT 'json data here',
  28. PRIMARY KEY (`id`)
  29. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  30. CREATE TABLE `phalapi_user_session_5` (
  31. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  32. ... ...
  33. `ext_data` text COMMENT 'json data here',
  34. PRIMARY KEY (`id`)
  35. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  36. CREATE TABLE `phalapi_user_session_6` (
  37. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  38. ... ...
  39. `ext_data` text COMMENT 'json data here',
  40. PRIMARY KEY (`id`)
  41. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  42. CREATE TABLE `phalapi_user_session_7` (
  43. ... ...
  44. `ext_data` text COMMENT 'json data here',
  45. PRIMARY KEY (`id`)
  46. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  47. CREATE TABLE `phalapi_user_session_8` (
  48. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  49. ... ...
  50. `ext_data` text COMMENT 'json data here',
  51. PRIMARY KEY (`id`)
  52. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  53. CREATE TABLE `phalapi_user_session_9` (
  54. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  55. ... ...
  56. `ext_data` text COMMENT 'json data here',
  57. PRIMARY KEY (`id`)
  58. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

最后,便可把生成好的SQL语句,导入到数据库,进行建表操作。

(4)生成接口代码 - V1.3.4及以上版本支持

当需要编写开发一个接口时,可以使用phalapi-buildcode脚本生成基本的Api、Domain和Model代码。此脚本不是很强悍的,项目可以根据自己的喜欢使用,或者修改定制自己的模板。其使用如下:[1.2] 创建一个自己的项目(含四个脚本命令的使用说明) - 图14

其中,

  • 第一个参数app_path:是指项目根目录到你的项目的相对路径
  • 第二个参数api_path:是需要创建接口的相对项目的相对路径,支持多级目录,可不带.php后缀
  • 第三个参数author:(可选)你的名字,默认为空
  • 第四个参数overwrite:(可选)是否覆盖已有的代码文件,默认为否
    例如,我们要为Demo项目生成一个新的接口文件./AA/BB/CC.php,则可以:
  1. $ cd /path/to/PhalApi
  2. $ ./PhalApi/phalapi-buildcode Demo AA/BB/CC dogstar
  3. Start to create folder /mnt/hgfs/F/PHP/PhalApi/PhalApi/../Demo/Api/AA/BB ...
  4. Start to create folder /mnt/hgfs/F/PHP/PhalApi/PhalApi/../Demo/Domain/AA/BB ...
  5. Start to create folder /mnt/hgfs/F/PHP/PhalApi/PhalApi/../Demo/Model/AA/BB ...
  6. Start to create file /mnt/hgfs/F/PHP/PhalApi/PhalApi/../Demo/Api/AA/BB/CC.php ...
  7. Start to create file /mnt/hgfs/F/PHP/PhalApi/PhalApi/../Demo/Domain/AA/BB/CC.php ...
  8. Start to create file /mnt/hgfs/F/PHP/PhalApi/PhalApi/../Demo/Model/AA/BB/CC.php ...
  9. OK! AA/BB/CC has been created successfully!

可以看到生成的代码有:[1.2] 创建一个自己的项目(含四个脚本命令的使用说明) - 图15

访问接口:[1.2] 创建一个自己的项目(含四个脚本命令的使用说明) - 图16

最后,在线接口列表,可以看到:[1.2] 创建一个自己的项目(含四个脚本命令的使用说明) - 图17

原文: https://www.phalapi.net/wikis/1-2.html