3.3 PhalApi 2.x 腳本命令

2018-07-28 21:24 更新

腳本命令的使用

自動(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ō)明。

phalapi-buildtest命令

當(dāng)需要對(duì)某個(gè)類(lèi)進(jìn)行單元測(cè)試時(shí),可使用phalapi-buildtest命令生成對(duì)應(yīng)的單元測(cè)試骨架代碼,其使用說(shuō)明如下:

其中,

  • 第一個(gè)參數(shù)file_path 是待測(cè)試的源文件相對(duì)/絕對(duì)路徑 。
  • 第二個(gè)參數(shù)class_name 是待測(cè)試的類(lèi)名。
  • 第三個(gè)參數(shù)bootstrap 是測(cè)試啟動(dòng)文件,通常是/path/to/phalapi/tests/bootstrap.php文件。
  • 第四個(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)行。

phalapi-buildsqls命令

當(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ù)dbs_config 是指向數(shù)據(jù)庫(kù)配置文件的路徑,如./Config/dbs.php,可以使用相對(duì)路徑。
  • 第二個(gè)參數(shù)table 是需要?jiǎng)?chuàng)建sql的表名,每次生成只支持一個(gè)。
  • 第三個(gè)參數(shù)engine 可選參數(shù),是指數(shù)據(jù)庫(kù)表的引擎,MySQL可以是:Innodb或者M(jìn)yISAM。
  • 第四個(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',

注意事項(xiàng)

在使用這些腳本命令前,需要注意以下幾點(diǎn)。

執(zhí)行權(quá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*

編碼問(wèn)題

其次,對(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
以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)