本來要介紹Yii的RBAC,但裏面有部分內容需要用到Yiic,先開篇文章介紹一下Yiic,本篇主要介紹CConsoleCommand,至於其他如怎麼利用Yiic創建應用等請參考Yii官方提供的文檔。
yii提供了強大的命令行工具來快速的創建相關組件和應用,要執行自己寫的CConsoleCommand需要按照下面的步驟來
1.配置
先來一句廢話,命令行方式下的app爲CConsoleApplication(位於framework\console下),而不是網頁端的CWebApplication,所以一些默認的組件是沒有加載,如authManager等,請參考CWebApplication的registerCoreComponents方法。
CConsoleApplication讀取的配置文件爲console.php(位與webapp\protected\config下),而不是main.php.其中至關重要的一項配置即爲commandPath(默認是webapp\protected\commands),即我們的命令放在什麼地方,我一般放在webapp\protected\commands\shell下。如果用到model,如某些AR類,也需要導入。我的配置爲:
#webapp\protected\config\console.php
..........
'import'=>array(
'application.models.*',
),
'commandPath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'commands'.DIRECTORY_SEPARATOR.'shell',
............
2.編寫新類繼承CConsoleCommand,需重寫CConsoleCommand的run方法,在run方法中編寫業務邏輯.
我們在webapp\protected\commands\shell中新建XyzCommand.php文件,其中Xyz表示命令的名字,但是需要大寫第一個字母,編寫XyzCommand類如下。
#webappprotected\commands\shell\XyzCommand.php
<?php
class XyzCommand extends CConsoleCommand{
public function run($args){
//在此編寫所需邏輯
echo 'Hello Command!';
}
}
因爲演示,此處只是在命令行中打印Hello Command!。
3.執行
首先需進入wepapp\protected目錄,然後運行yiic查看是否有我們剛纔編寫的xyz命令,如下
執行我們的命令xyz 用yiic xyz 看到結果 搞定