自動(dòng)化是提升開(kāi)發(fā)效率的一個(gè)有效途徑。PhalApi致力于簡(jiǎn)單的接口服務(wù)開(kāi)發(fā),同時(shí)也致力于通過(guò)自動(dòng)化提升項(xiàng)目的開(kāi)發(fā)速度。為此,生成單元測(cè)試骨架代碼、生成數(shù)據(jù)庫(kù)建表SQL這些腳本命令。應(yīng)用這些腳本命令,能快速完成重復(fù)但消耗時(shí)間的工作。下面將分別進(jìn)行說(shuō)明。
當(dāng)需要對(duì)某個(gè)類(lèi)進(jìn)行單元測(cè)試時(shí),可使用phalapi-buildtest命令生成對(duì)應(yīng)的單元測(cè)試骨架代碼,其使用說(shuō)明如下:
其中,
第四個(gè)參數(shù)author 你的名字,默認(rèn)是dogstar。
通常,可以先寫(xiě)好類(lèi)名以及相應(yīng)的接口,然后再使用此腳本生成單元測(cè)試骨架代碼。以默認(rèn)接口服務(wù)Site.Index
接口服務(wù)為例,當(dāng)需要為其生成單元測(cè)試骨架代碼時(shí),可以執(zhí)行以下命令。
$ ./bin/phalapi-buildtest ./src/app/Api/Site.php App\\Api\\Site > ./tests/app/Api/Site_Test.php
最后,需要將生成好的骨架代碼,重定向保存到你要保存的位置。通常與產(chǎn)品代碼對(duì)齊,并以“{類(lèi)名} + _Test.php”方式命名,如這里的app/Api/Site_Test.php。
生成的骨架代碼類(lèi)似如下:
<?php
//require_once dirname(__FILE__) . '/bootstrap.php';
if (!class_exists('App\\Api\\Site')) {
require dirname(__FILE__) . '/./src/app/Api/Site.php';
}
/**
* PhpUnderControl_App\Api\Site_Test
*
* 針對(duì) ./src/app/Api/Site.php App\Api\Site 類(lèi)的PHPUnit單元測(cè)試
*
* @author: dogstar 20170725
*/
class PhpUnderControl_AppApiSite_Test extends \PHPUnit_Framework_TestCase
{
public $appApiSite;
protected function setUp()
{
parent::setUp();
$this->appApiSite = new App\Api\Site();
}
... ...
簡(jiǎn)單修改后,便可運(yùn)行。
當(dāng)需要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)表時(shí),可以使用phalapi-buildsqls腳本命令,再結(jié)合數(shù)據(jù)庫(kù)配置文件./config/dbs.php即可生成建表SQL語(yǔ)句。此命令在創(chuàng)建分表時(shí)尤其有用,其使用如下:
其中,
第四個(gè)參數(shù)sqls_folder 可選參數(shù),SQL文件的目錄路徑。
在執(zhí)行此命令先,需要提前先將建表的SQL語(yǔ)句,排除除主鍵id和ext_data字段,放置到./data目錄下,文件名為:{表名}.sql。
例如,我們需要生成10張user_session用戶(hù)會(huì)話(huà)分表的建表語(yǔ)句,那么需要先添加數(shù)據(jù)文件./data/user_session.sql,并將除主鍵id和ext_data字段外的其他建表語(yǔ)句保存到該文件。
`user_id` bigint(20) DEFAULT '0' COMMENT '用戶(hù)id',
`token` varchar(64) DEFAULT '' COMMENT '登錄token',
`client` varchar(32) DEFAULT '' COMMENT '客戶(hù)端來(lái)源',
`times` int(6) DEFAULT '0' COMMENT '登錄次數(shù)',
`login_time` int(11) DEFAULT '0' COMMENT '登錄時(shí)間',
`expires_time` int(11) DEFAULT '0' COMMENT '過(guò)期時(shí)間',
然后,進(jìn)入到項(xiàng)目根目錄,執(zhí)行命令:
$ php ./bin/phalapi-buildsqls ./config/dbs.php user_session
正常情況下,會(huì)看到生成好的SQL語(yǔ)句,類(lèi)似下面這樣的輸出。
CREATE TABLE `phalapi_user_session_0` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) DEFAULT '0' COMMENT '用戶(hù)id',
`token` varchar(64) DEFAULT '' COMMENT '登錄token',
`client` varchar(32) DEFAULT '' COMMENT '客戶(hù)端來(lái)源',
`times` int(6) DEFAULT '0' COMMENT '登錄次數(shù)',
`login_time` int(11) DEFAULT '0' COMMENT '登錄時(shí)間',
`expires_time` int(11) DEFAULT '0' COMMENT '過(guò)期時(shí)間',
`ext_data` text COMMENT 'json data here',
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
... ...
CREATE TABLE phalapi_user_session_3
... ...
CREATE TABLE phalapi_user_session_4
... ...
CREATE TABLE phalapi_user_session_5
... ...
CREATE TABLE phalapi_user_session_6
... ...
CREATE TABLE phalapi_user_session_7
... ...
CREATE TABLE phalapi_user_session_8
... ...
CREATE TABLE phalapi_user_session_9
... ...
最后,便可把生成好的SQL語(yǔ)句,導(dǎo)入到數(shù)據(jù)庫(kù),完成建表的操作。
值得注意的是,生成的SQL建表語(yǔ)句默認(rèn)會(huì)帶有自增ID主鍵id和擴(kuò)展字段ext_data這兩個(gè)字段。所以保存在./data目錄下的建表語(yǔ)句可省略主鍵字段,以免重復(fù)。
```sql
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
... ...
`ext_data` text COMMENT 'json data here',
在使用這些腳本命令前,需要注意以下幾點(diǎn)。
第一點(diǎn)是執(zhí)行權(quán)限,當(dāng)未設(shè)置執(zhí)行權(quán)限時(shí),腳本命令會(huì)提示無(wú)執(zhí)行權(quán)限,類(lèi)似這樣。
$ ./phalapi/bin/phalapi-buildtest
-bash: ./phalapi/bin/phalapi-buildtest: Permission denied
那么需要這樣設(shè)置腳本命令的執(zhí)行權(quán)限。
$ chmod +x ./phalapi/bin/phalapi-build*
其次,對(duì)于Linux平臺(tái),可能會(huì)存在編碼問(wèn)題,例如提示:
$ ./phalapi/bin/phalapi-buildtest
bash: ./phalapi/bin/phalapi-buildtest: /bin/bash^M: bad interpreter: No such file or directory
這時(shí),可使用dos2unix命令轉(zhuǎn)換一下編碼。
$ dos2unix ./phalapi/bin/phalapi-buildtest*
dos2unix: converting file ./phalapi/bin/phalapi-buildsqls to Unix format ...
dos2unix: converting file ./phalapi/bin/phalapi-buildtest to Unix format ...
最后一點(diǎn)是,在任意目錄位置都是可以使用這些命令的,但會(huì)與所在的項(xiàng)目目錄綁定。通常,為了更方便使用這些命令,可以將這些命令軟鏈到系統(tǒng)命令下。例如:
$ sudo ln -s /path/to/phalapi/bin/phalapi-buildsqls /usr/bin/phalapi-buildsqls
$ sudo ln -s /path/to/phalapi/bin/phalapi-buildtest /usr/bin/phalapi-buildtest
更多建議: