摘要:它由一個或多個類組成,它們在控制臺環境下通常被稱為命令。控制臺入口腳本通常被稱為,位于應用程序的根目錄。選項通過覆蓋在中的方法,你可以指定可用于控制臺命令選項。參數將傳遞給請求的子命令對應的操作方法。通常,執行成功的命令會返回。
簡述
控制臺應用程序的結構非常類似于 Yii 的一個 Web 應用程序,主要用于終端服務器執行。
控制臺命令控制臺應用程序的結構非常類似于 Yii 的一個 Web 應用程序。
它由一個或多個 yiiconsoleController 類組成,它們在控制臺環境下通常被稱為“命令”。每個控制器還可以有一個或多個動作,就像 web 控制器。
兩個項目模板(基礎模版和高級模版)都有自己的控制臺應用程序。你可以通過運行 yii 腳本,在位于倉庫的基本目錄中運行它。
當你不帶任何參數來運行它時,會給你一些可用的命令列表:
正如你在截圖中看到,Yii 中已經定義了一組默認情況下可用的命令:
yiiconsolecontrollersAssetController - 允許合并和壓縮你的 JavaScript 和 CSS 文件。
yiiconsolecontrollersCacheController - 清除應用程序緩存。
yiiconsolecontrollersFixtureController - 管理用于單元測試 fixture 的加載和卸載。
yiiconsolecontrollersHelpController - 提供有關控制臺命令的幫助信息,這是默認的命令并會打印上面截圖所示的輸出。
yiiconsolecontrollersMessageController - 從源文件提取翻譯信息。
yiiconsolecontrollersMigrateController - 管理應用程序數據庫遷移。
用法
你可以使用以下語法來執行控制臺控制器操作:
yii[--option1=value1 --option2=value2 ... argument1 argument2 ...]
以上,
例如,將
yiiconsolecontrollersMigrateController::actionUp()
限制 5 個數據庫遷移并將
yiiconsolecontrollersMigrateController::$migrationTable
設置為 migrations 應該這樣調用:
yii migrate/up 5 --migrationTable=migrations
注意: 當在控制臺使用 時, 不要忘記像 "" 一樣用引號來引起來,為了防止在 shell 中執行命令時被當成當前目錄下的所有文件名。
入口腳本控制臺應用程序的入口腳本相當于用于 Web 應用程序的 index.php 入口文件。 控制臺入口腳本通常被稱為 yii,位于應用程序的根目錄。它包含了類似下面的代碼:
#!/usr/bin/env phprun(); exit($exitCode);
該腳本將被創建為你應用程序中的一部分;你可以根據你的需求來修改它。如果你不需要記錄錯誤信息或者希望提高整體性能,YII_DEBUG 常數應定義為 false。
在基本的和高級的兩個應用程序模板中,控制臺應用程序的入口腳本在默認情況下會啟用調試模式,以提供給開發者更好的環境。
配置在上面的代碼中可以看到,控制臺應用程序使用它自己的配置文件,名為 console.php 。在該文件里你可以給控制臺配置各種 應用組件 和屬性。
如果你的 web 應用程序和控制臺應用程序共享大量的配置參數和值,你可以考慮把這些值放在一個多帶帶的文件中,該文件中包括( web 和控制臺)應用程序配置。 你可以在“高級”項目模板中看到一個例子。
提示:有時,你可能需要使用一個與在入口腳本中指定的應用程序配置不同的控制臺命令。例如,你可能想使用 yii migrate命令來升級你的測試數據庫,它被配置在每個測試套件。
要動態地更改配置,只需指定一個自定義應用程序的配置文件,通過appconfig選項來執行命令:
yii控制臺的控制器和行為--appconfig=path/to/config.php ...
一個控制臺命令繼承自 yiiconsoleController 控制器類。 在控制器類中,定義一個或多個與控制器的子命令相對應的動作。在每一個動作中,編寫你的代碼實現特定的子命令的適當的任務。
當你運行一個命令時,你需要指定一個控制器的路由。例如,路由 migrate/create 調用子命令對應的yiiconsolecontrollersMigrateController::actionCreate() 動作方法。
如果在執行過程中提供的路由不包含路由 ID ,將執行默認操作(如 web 控制器)。
選項通過覆蓋在 options() 中的方法,你可以指定可用于控制臺命令(controller/actionID)選項。這個方法應該返回控制器類的公共屬性的列表。
當運行一個命令,你可以指定使用語法 --OptionName=OptionValue 選項的值。 這將分配OptionValue 到控制器類的 OptionName 屬性。
參數除了選項,命令還可以接收參數。參數將傳遞給請求的子命令對應的操作方法。第一個參數對應第一個參數,第二個參數對應第二個參數,依次類推。
命令被調用時,如果沒有足夠的參數,如果有定義默認值的情況下,則相應的參數將采取默認聲明的值;如果沒有設置默認值,并且在運行時沒有提供任何值,該命令將以一個錯誤退出。
你可以使用 array 類型提示來指示一個參數應該被視為一個數組。該數組通過拆分輸入字符串的逗號來生成。
下面的示例演示如何聲明參數:
class ExampleController extends yiiconsoleController{ // 命令 "yii example/create test" 會調用 "actionCreate("test")" public function actionCreate($name) { ... } // 命令 "yii example/index city" 會調用 "actionIndex("city", "name")" // 命令 "yii example/index city id" 會調用 "actionIndex("city", "id")" public function actionIndex($category, $order = "name") { ... } // 命令 "yii example/add test" 會調用 "actionAdd(["test"])" // 命令 "yii example/add test1,test2" 會調用 "actionAdd(["test1", "test2"])" public function actionAdd(array $name) { ... } }退出代碼
使用退出代碼是控制臺應用程序開發的最佳做法。
通常,執行成功的命令會返回 0。如果命令返回一個非零數字,會認為出現錯誤。
該返回的數字作為出錯代碼,用以了解錯誤的詳細信息。
例如 1 可能代表一個未知的錯誤,所有的代碼都將保留在特定的情況下:輸入錯誤,丟失的文件等等。
要讓控制臺命令返回一個退出代碼,只需在控制器操作方法中返回一個整數:
public function actionIndex(){ if (/* some problem */) { echo "A problem occured! "; return 1; } // do something return 0; }
你可以使用一些預定義的常數:
Controller::EXIT_CODE_NORMAL 值為 0;
Controller::EXIT_CODE_ERROR 值為 1.
為控制器定義有意義的常量,以防有更多的錯誤代碼類型,這會是一個很好的實踐。
格式和顏色Yii 支持格式化輸出,如果終端運行命令不支持的話則會自動退化為非格式化輸出。
要輸出格式的字符串很簡單。以下展示了如何輸出一些加粗的文字:
$this->stdout("Hello? ", Console::BOLD);
如果你需要建立字符串動態結合的多種樣式,最好使用 ansiFormat :
$name = $this->ansiFormat("Alex", Console::FG_YELLOW); echo "Hello, my name is $name.";
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21611.html
摘要:把所有的增量數據庫遷移提交到生產環境數據庫當中。如果其中任意一個遷移提交失敗了,那么這條命令將會退出并停止剩下的那些還未執行的遷移。執行這條命令期間不會有任何的遷移會被提交或還原。 簡述 數據遷移就是數據庫表在團隊建的遷移操作,達到團隊相互間的信息同步,數據統一。 數據庫遷移 一般步驟: 1、在 yii2 的 migrate 中,通常用來對數據庫數據表進行修改操作,主要對結構和小部分數...
摘要:簡述是一個強大的代碼生成器,主要用于后臺代碼生成。下面列出由生成的文件,以便你研習功能和實現,或修改它們控制器模型和視圖補充被設計成高度可定制和可擴展的代碼生成工具。使用生成代碼是一個基于界面的代碼生成工具。 簡述 Gii 是一個強大的代碼生成器,主要用于后臺代碼生成。 開始 Gii Gii 是 Yii 中的一個模塊。可以通過配置應用的 yiibaseApplication::modu...
摘要:簡述這里簡單歸納總結關于的錯誤處理和日志記錄的操作。錯誤處理器會正確地設置響應的狀態碼并使用合適的錯誤視圖頁面來顯示錯誤信息。記錄一個警告消息用來指示一些已經發生的意外。的義務是正確處理日志消息。相應的消息通過被記錄。 簡述 這里簡單歸納總結關于Yii的錯誤處理和日志記錄的操作。 錯誤處理(Errors) Yii 內置了一個yiiwebErrorHandler錯誤處理器,它使錯誤處理更...
摘要:簡述模塊是中的架構的板塊,主要負責數據的展示,渲染模板文件,展示數據內容。此外在一個視圖中還可以引入多個視圖文件,也是通過方法實現。布局文件的數據默認以顯示,也可以用數據塊的形式渲染到視圖上。必須要確認生成一次,才會正式生成新首頁。 簡述 View模塊是Yii中的MVC架構的V板塊,主要負責數據的展示,渲染模板文件,展示數據內容。 基本概念 MVC在Yii里面有一個Views文件夾,里...
摘要:認證事件類在登錄和注銷流程引發一些事件。成功注銷后引發。提供兩種授權方法存取控制過濾器和基于角色的存取控制。允許已認證用戶執行操作。指定一個回調函數用于判定該規則是否滿足條件。 簡述 在程序開發過程中,往往都不能忽視安全問題,無論你的框架有多么完美,都會有破綻,所以完善自己的系統,從程序開發的安全角度去思考問題,把一切潛在的危機扼殺在搖籃中。 認證(Authentication) 認證...
閱讀 1558·2021-09-22 15:52
閱讀 3469·2021-09-22 14:59
閱讀 2848·2021-09-02 15:12
閱讀 977·2021-08-20 09:35
閱讀 1581·2019-08-30 14:09
閱讀 2714·2019-08-30 13:56
閱讀 1652·2019-08-26 18:27
閱讀 3367·2019-08-26 13:37