創(chuàng)建一個自己的項目

2018-11-21 10:21 更新

有夢想的人學習能力特別強,而且不拒絕任何新東西。 -- 《理想豐滿》

1.2.1 可視化安裝

將代碼上傳到服務器并解壓后,訪問: ./Public/install/ 下的安裝向?qū)В缭跒g覽器打開:

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

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

(0)第零步:同意安裝

a pic

(1)第一步:環(huán)境檢查

a pic

(2)第二步:系統(tǒng)配置

a pic

(3)第三步:接口請求

a pic

(4)運行效果

a pic

1.2.2 手動創(chuàng)建

在Windows系統(tǒng)下,可以手動創(chuàng)建一個新的項目。

假設目錄為: F:\xampp\htdocs\PhalApi
以下是簡單的創(chuàng)建操作:

(1)新建項目目錄

在./PhalApi目錄下新建一個自己的項目目錄,通常以項目名稱命名,如項目MyApp對應:

QQ截圖20150404004219

然后,再分別在里面添加接口目錄Api、領域目錄Domain、數(shù)據(jù)源目錄Model和通用目錄Common,即:

QQ截圖20150404004458

(2)準備一個接口

全部的接口類文件需要放置到./Api 目錄下,你可以嘗試編寫一個簡單的Default.Index接口,也可以直接將./Demo/Api/Default.php文件復制過來。

(3)創(chuàng)建訪問入口

將./Public/demo目錄復制一份為對應項目名稱小寫的目錄,如這里的myapp:

QQ截圖20150404004653

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

QQ截圖20150404004731

(4)瀏覽器訪問

在瀏覽器輸入以下鏈接:

http://localhost/phalapi/public/myapp/

應該可以看到:

QQ截圖20150404004959

1.2.3 自動生成

在Linux系統(tǒng)下,我們可以使用腳本快速生成一個項目結(jié)構,此過程只需要1分鐘左右。

簡明操作如下:

(1)使用phalapi-buildapp腳本

phalapi-buildapp腳本用于創(chuàng)建項目,進入 ./PhalApi/PhalApi/ 后,可以看到這個腳本。

不過,首先,需要為這個腳本添加執(zhí)行權限:

$ chmod +x ./phalapi-buildapp

然后,調(diào)用腳本創(chuàng)建一個MyApp的項目:

$ ./phalapi-buildapp MyApp

OK!

(2)查看生成的項目及訪問

回到 /path/to/PhalApi 目錄,你會發(fā)現(xiàn)生成了一個MyApp目錄,并且里面的文件如下:

$ 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的訪問入口:

└── myapp
    ├── checkApiParams.php
    └── index.php

在瀏覽器訪問:

#根目錄設置為./Public
http://dev.phalapi.com/myapp/

#或沒設置根目錄為./Public時訪問
http://dev.phalapi.com/Public/myapp/

可以看到接口結(jié)果輸出。

(3)執(zhí)行單元測試

如果安裝了PHPUnit,執(zhí)行一下單元測試,也是通過的!

$ 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)腳本加執(zhí)行權限和軟鏈

對于腳本命令,需要添加執(zhí)行權限和軟鏈,便于日后使用:

$ 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的執(zhí)行路徑追加到/usr/bin下,即類似:

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

解決方案二:使用alias起別名

或者通過使用別名 alias 的方式來注冊腳本命令:

# vim /etc/bashrc 

#PhalApi - 自動生成SQL語句
alias phalapi-buildsqls='/usr/local/php/bin/php /path/to/PhalApi/phalapi-buildsqls'

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

# source /etc/bashrc

$ source /etc/bashrc

1.2.5 三個腳本命令使用說明

(1) 創(chuàng)建應用項目

如前文所述,可以通過phalapi-buildapp腳本來創(chuàng)建一個新的項目,其使用說明如下:

(2)生成單元測試骨架代碼

當需要對某個類進行單元測試時,可使用phalapi-buildtest腳本生成對應的單元測試代碼,其使用如下:

其中,

  • 第一個參數(shù)file_path:是待測試的源文件相對/絕對路徑
  • 第二個參數(shù)class_name:是待測試的類名
  • 第三個參數(shù)bootstrap:是測試啟動文件,通常是./test_env.php文件
  • 第四個參數(shù)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

最后,需要將生成好的代碼,重定向保存到你要保存的位置。通常與產(chǎn)品代碼對齊,并以“{類名} + _Test.php”方式命名。

(3)生成數(shù)據(jù)庫建表SQL

當需要創(chuàng)建數(shù)據(jù)庫表時,可以使用phalapi-buildsqls腳本結(jié)合配置文件dbs.php生成建表SQL,這個工具在創(chuàng)建分表時尤其有用,其使用如下:

其中,

  • 第一個參數(shù)dbs_config:是指向數(shù)據(jù)庫配置文件./Config/dbs.php的路徑,可以使用相對路徑
  • 第二個參數(shù)table:是需要創(chuàng)建sql的表名,每次生成只支持一個
  • 第三個參數(shù)engine:(可選)是指數(shù)據(jù)庫表的引擎,可以是:Innodb或者MyISAM

溫馨提示:需要提前先將建表的SQL語句(除主鍵id和ext_data字段外)放置到./Data/目錄下,文件名為:{表名}.sql。

如,我們需要生成10用戶user_session表的的建表語句,那么需要添加數(shù)據(jù)文件./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 '登錄次數(shù)',
      `login_time` int(11) DEFAULT '0' COMMENT '登錄時間',
      `expires_time` int(11) DEFAULT '0' COMMENT '過期時間',

然后,進入到項目根目錄,執(zhí)行命令:

$ 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語句,導入到數(shù)據(jù)庫,進行建表操作。

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

當需要編寫開發(fā)一個接口時,可以使用phalapi-buildcode腳本生成基本的Api、Domain和Model代碼。此腳本不是很強悍的,項目可以根據(jù)自己的喜歡使用,或者修改定制自己的模板。其使用如下:

其中,

  • 第一個參數(shù)app_path:是指項目根目錄到你的項目的相對路徑
  • 第二個參數(shù)api_path:是需要創(chuàng)建接口的相對項目的相對路徑,支持多級目錄,可不帶.php后綴
  • 第三個參數(shù)author:(可選)你的名字,默認為空
  • 第四個參數(shù)overwrite:(可選)是否覆蓋已有的代碼文件,默認為否

例如,我們要為Demo項目生成一個新的接口文件./AA/BB/CC.php,則可以:

$ cd /path/to/PhalApi
$ ./PhalApi/phalapi-buildcode Demo AA/BB/CC dogstar
Start to create folder /mnt/hgfs/F/PHP/PhalApi/PhalApi/../Demo/Api/AA/BB ...
Start to create folder /mnt/hgfs/F/PHP/PhalApi/PhalApi/../Demo/Domain/AA/BB ...
Start to create folder /mnt/hgfs/F/PHP/PhalApi/PhalApi/../Demo/Model/AA/BB ...
Start to create file /mnt/hgfs/F/PHP/PhalApi/PhalApi/../Demo/Api/AA/BB/CC.php ...
Start to create file /mnt/hgfs/F/PHP/PhalApi/PhalApi/../Demo/Domain/AA/BB/CC.php ...
Start to create file /mnt/hgfs/F/PHP/PhalApi/PhalApi/../Demo/Model/AA/BB/CC.php ...

OK! AA/BB/CC has been created successfully!

可以看到生成的代碼有:

訪問接口:

最后,在線接口列表,可以看到:

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號