多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
####[上一章](/wikis/%5B1.1%5D-%E4%B8%8B%E8%BD%BD%E4%B8%8E%E5%AE%89%E8%A3%85.html) [文档首页](/wikis/) [下一章](/wikis/%5B1.3%5D-%E5%9C%A8%E7%BA%BF%E4%BD%93%E9%AA%8C.html) *** _有梦想的人学习能力特别强,而且不拒绝任何新东西。 -- 《理想丰满》_ ##1.2.1 可视化安装 将代码上传到服务器并解压后,访问: ./Public/install/ 下的安装向导,如在浏览器打开: ``` http://dev.phalapi.com/install/ ``` 然后按照提示,一步步操作即可: ###(0)第零步:同意安装 ![a pic](http://7xiz2f.com1.z0.glb.clouddn.com/QQ20151024155002.jpg) ###(1)第一步:环境检查 ![a pic](http://7xiz2f.com1.z0.glb.clouddn.com/QQ20151024155015.jpg) ###(2)第二步:系统配置 ![a pic](http://7xiz2f.com1.z0.glb.clouddn.com/QQ20151024155030.jpg) ###(3)第三步:接口请求 ![a pic](http://7xiz2f.com1.z0.glb.clouddn.com/QQ20151024155041.jpg) ###(4)运行效果 ![a pic](http://7qnay5.com1.z0.glb.clouddn.com/step7_20151012223516.png) ##1.2.2 手动创建 在Windows系统下,可以手动创建一个新的项目。 假设目录为: F:\xampp\htdocs\PhalApi 以下是简单的创建操作: ###(1)新建项目目录 在./PhalApi目录下新建一个自己的项目目录,通常以项目名称命名,如项目MyApp对应: ![QQ截图20150404004219](http://webtools.qiniudn.com/20150411005257_929b7fdc7e966f54608b25c2e17def29) 然后,再分别在里面添加接口目录Api、领域目录Domain、数据源目录Model和通用目录Common,即: ![QQ截图20150404004458](http://webtools.qiniudn.com/20150411005257_9008ecb3491a703442f3522a86ffd624) ###(2)准备一个接口 全部的接口类文件需要放置到./Api 目录下,你可以尝试编写一个简单的Default.Index接口,也可以直接将./Demo/Api/Default.php文件复制过来。 ###(3)创建访问入口 将./Public/demo目录复制一份为对应项目名称小写的目录,如这里的myapp: ![QQ截图20150404004653](http://webtools.qiniudn.com/20150411005257_e78908f60d6b34c7f932ba15eff1c1a2) 注意!这里需要修改./Public/myapp/index.php和./Public/myapp/checkApiParams.php中的目录: ![QQ截图20150404004731](http://webtools.qiniudn.com/20150411005257_92bff2ed15c72380c54dff46ed800544) ###(4)浏览器访问 在浏览器输入以下链接: ``` http://localhost/phalapi/public/myapp/ ``` 应该可以看到: ![QQ截图20150404004959](http://webtools.qiniudn.com/20150411005257_33f51b3efcd0938bb7fc36bb813f4808) ##1.2.3 自动生成 在Linux系统下,我们可以使用脚本快速生成一个项目结构,此过程只需要1分钟左右。 简明操作如下: ###(1)使用phalapi-buildapp脚本 phalapi-buildapp脚本用于创建项目,进入 ./PhalApi/PhalApi/ 后,可以看到这个脚本。 不过,首先,需要为这个脚本添加执行权限: ```javascript $ chmod +x ./phalapi-buildapp ``` 然后,调用脚本创建一个MyApp的项目: ```javascript $ ./phalapi-buildapp MyApp OK! ``` ###(2)查看生成的项目及访问 回到 /path/to/PhalApi 目录,你会发现生成了一个MyApp目录,并且里面的文件如下: ```javascript $ cd MyApp/ $ tree . ├── Api │   └── Default.php ├── Common ├── Domain ├── Model └── Tests ├── Api │   └── Api_Default_Test.php ├── Common ├── Domain ├── Model ├── phpunit.xml └── test_env.php 9 directories, 4 files ``` 在Public目录下,则会有myapp的访问入口: ```javascript └── myapp ├── checkApiParams.php └── index.php ``` 在浏览器访问: ``` #根目录设置为./Public http://dev.phalapi.com/myapp/ #或没设置根目录为./Public时访问 http://dev.phalapi.com/Public/myapp/ ``` 可以看到接口结果输出。 ###(3)执行单元测试 如果安装了PHPUnit,执行一下单元测试,也是通过的! ```javascript $ phpunit ./Tests/ PHPUnit 4.3.4 by Sebastian Bergmann. ... Time: 7 ms, Memory: 5.75Mb OK (3 tests, 13 assertions) ``` ##1.2.4 更多技巧 ###(1)日志目录需要0777权限 请确保日志目录Runtime拥有写入的权限,可以给0777 。 ###(2)脚本加执行权限和软链 对于脚本命令,需要添加执行权限和软链,便于日后使用: ```javascript $ cd /pah/to/PhalApi/PhalApi $ chmod +x ./phalapi-buildapp $ sudo ln -s /path/to/phalapi-buildapp /usr/bin/phalapi-buildapp $ chmod +x ./phalapi-buildsqls $ sudo ln -s /path/to/phalapi-buildsqls /usr/bin/phalapi-buildsqls $ chmod +x ./phalapi-buildtest $ sudo ln -s /path/to/phalapi-buildtest /usr/bin/phalapi-buildtest ``` ###(3)No such file or directory的解决方案 ####解决方案一:增加 /usr/bin/php软链 可以将php的执行路径追加到/usr/bin下,即类似: ``` ln -s /usr/local/php/bin/php /usr/bin/php ``` ####解决方案二:使用alias起别名 或者通过使用别名 alias 的方式来注册脚本命令: ```javascript # vim /etc/bashrc #PhalApi - 自动生成SQL语句 alias phalapi-buildsqls='/usr/local/php/bin/php /path/to/PhalApi/phalapi-buildsqls' ``` 需要注意的是,保存后,需要source一下,即: ```javascript # source /etc/bashrc $ source /etc/bashrc ``` *** ##1.2.5 三个脚本命令使用说明 ###(1) 创建应用项目 如前文所述,可以通过```phalapi-buildapp```脚本来创建一个新的项目,其使用说明如下: ![](http://7xiz2f.com1.z0.glb.clouddn.com/1_20160422210157.jpg) ###(2)生成单元测试骨架代码 当需要对某个类进行单元测试时,可使用```phalapi-buildtest```脚本生成对应的单元测试代码,其使用如下: ![](http://7xiz2f.com1.z0.glb.clouddn.com/3_20160422210251.jpg) 其中, + 第一个参数file_path:是待测试的源文件相对/绝对路径 + 第二个参数class_name:是待测试的类名 + 第三个参数bootstrap:是测试启动文件,通常是./test_env.php文件 + 第四个参数author:你的名字,默认是dogstar 通常,可以先写好类名以及相应的接口,然后再使用此脚本生成单元测试骨架代码。 以Default.Index默认接口服务为例,需要为此生成测试骨架代码,可以依次这样操作: ``` $ cd /path/to/PhalApi $ cd ./Demo/Tests $ ../../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,这个工具在创建分表时尤其有用,其使用如下: ![](http://7xiz2f.com1.z0.glb.clouddn.com/2_20160422210230.jpg) 其中, + 第一个参数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字段外): ``` `user_id` bigint(20) DEFAULT '0' COMMENT '用户id', `token` varchar(64) DEFAULT '' COMMENT '登录token', `client` varchar(32) DEFAULT '' COMMENT '客户端来源', `times` int(6) DEFAULT '0' COMMENT '登录次数', `login_time` int(11) DEFAULT '0' COMMENT '登录时间', `expires_time` int(11) DEFAULT '0' COMMENT '过期时间', ``` 然后,进入到项目根目录,执行命令: ``` $ php ./PhalApi/phalapi-buildsqls ./Config/dbs.php user_session ``` 就会看到生成好的SQL语句了,类似: ``` CREATE TABLE `phalapi_user_session_0` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, ... ... PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `phalapi_user_session_1` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, ... ... `ext_data` text COMMENT 'json data here', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `phalapi_user_session_2` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, ... ... `ext_data` text COMMENT 'json data here', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `phalapi_user_session_3` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, ... ... `ext_data` text COMMENT 'json data here', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `phalapi_user_session_4` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, ... ... `ext_data` text COMMENT 'json data here', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `phalapi_user_session_5` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, ... ... `ext_data` text COMMENT 'json data here', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `phalapi_user_session_6` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, ... ... `ext_data` text COMMENT 'json data here', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `phalapi_user_session_7` ( ... ... `ext_data` text COMMENT 'json data here', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `phalapi_user_session_8` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, ... ... `ext_data` text COMMENT 'json data here', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `phalapi_user_session_9` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, ... ... `ext_data` text COMMENT 'json data here', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 最后,便可把生成好的SQL语句,导入到数据库,进行建表操作。 ####[上一章](/wikis/%5B1.1%5D-%E4%B8%8B%E8%BD%BD%E4%B8%8E%E5%AE%89%E8%A3%85.html) [文档首页](/wikis/) [下一章](/wikis/%5B1.3%5D-%E5%9C%A8%E7%BA%BF%E4%BD%93%E9%AA%8C.html)