成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Yii 的修行之路 - Console 控制臺(tái)命令

everfly / 2644人閱讀

摘要:它由一個(gè)或多個(gè)類組成,它們?cè)诳刂婆_(tái)環(huán)境下通常被稱為命令??刂婆_(tái)入口腳本通常被稱為,位于應(yīng)用程序的根目錄。選項(xiàng)通過(guò)覆蓋在中的方法,你可以指定可用于控制臺(tái)命令選項(xiàng)。參數(shù)將傳遞給請(qǐng)求的子命令對(duì)應(yīng)的操作方法。通常,執(zhí)行成功的命令會(huì)返回。

簡(jiǎn)述

控制臺(tái)應(yīng)用程序的結(jié)構(gòu)非常類似于 Yii 的一個(gè) Web 應(yīng)用程序,主要用于終端服務(wù)器執(zhí)行。

控制臺(tái)命令

控制臺(tái)應(yīng)用程序的結(jié)構(gòu)非常類似于 Yii 的一個(gè) Web 應(yīng)用程序。

它由一個(gè)或多個(gè) yiiconsoleController 類組成,它們?cè)诳刂婆_(tái)環(huán)境下通常被稱為“命令”。每個(gè)控制器還可以有一個(gè)或多個(gè)動(dòng)作,就像 web 控制器。

兩個(gè)項(xiàng)目模板(基礎(chǔ)模版和高級(jí)模版)都有自己的控制臺(tái)應(yīng)用程序。你可以通過(guò)運(yùn)行 yii 腳本,在位于倉(cāng)庫(kù)的基本目錄中運(yùn)行它。

當(dāng)你不帶任何參數(shù)來(lái)運(yùn)行它時(shí),會(huì)給你一些可用的命令列表:

正如你在截圖中看到,Yii 中已經(jīng)定義了一組默認(rèn)情況下可用的命令:

yiiconsolecontrollersAssetController - 允許合并和壓縮你的 JavaScript 和 CSS 文件。

yiiconsolecontrollersCacheController - 清除應(yīng)用程序緩存。

yiiconsolecontrollersFixtureController - 管理用于單元測(cè)試 fixture 的加載和卸載。

yiiconsolecontrollersHelpController - 提供有關(guān)控制臺(tái)命令的幫助信息,這是默認(rèn)的命令并會(huì)打印上面截圖所示的輸出。

yiiconsolecontrollersMessageController - 從源文件提取翻譯信息。

yiiconsolecontrollersMigrateController - 管理應(yīng)用程序數(shù)據(jù)庫(kù)遷移。

用法
你可以使用以下語(yǔ)法來(lái)執(zhí)行控制臺(tái)控制器操作:

yii  [--option1=value1 --option2=value2 ... argument1 argument2 ...]

以上, 指的是控制器動(dòng)作的路由。選項(xiàng)將填充類屬性,參數(shù)是動(dòng)作方法的參數(shù)。

例如,將

yiiconsolecontrollersMigrateController::actionUp()

限制 5 個(gè)數(shù)據(jù)庫(kù)遷移并將

yiiconsolecontrollersMigrateController::$migrationTable

設(shè)置為 migrations 應(yīng)該這樣調(diào)用:

yii migrate/up 5 --migrationTable=migrations

注意: 當(dāng)在控制臺(tái)使用 時(shí), 不要忘記像 "" 一樣用引號(hào)來(lái)引起來(lái),為了防止在 shell 中執(zhí)行命令時(shí)被當(dāng)成當(dāng)前目錄下的所有文件名。

入口腳本

控制臺(tái)應(yīng)用程序的入口腳本相當(dāng)于用于 Web 應(yīng)用程序的 index.php 入口文件。 控制臺(tái)入口腳本通常被稱為 yii,位于應(yīng)用程序的根目錄。它包含了類似下面的代碼:

#!/usr/bin/env phprun();
exit($exitCode);

該腳本將被創(chuàng)建為你應(yīng)用程序中的一部分;你可以根據(jù)你的需求來(lái)修改它。如果你不需要記錄錯(cuò)誤信息或者希望提高整體性能,YII_DEBUG 常數(shù)應(yīng)定義為 false。

在基本的和高級(jí)的兩個(gè)應(yīng)用程序模板中,控制臺(tái)應(yīng)用程序的入口腳本在默認(rèn)情況下會(huì)啟用調(diào)試模式,以提供給開(kāi)發(fā)者更好的環(huán)境。

配置

在上面的代碼中可以看到,控制臺(tái)應(yīng)用程序使用它自己的配置文件,名為 console.php 。在該文件里你可以給控制臺(tái)配置各種 應(yīng)用組件 和屬性。

如果你的 web 應(yīng)用程序和控制臺(tái)應(yīng)用程序共享大量的配置參數(shù)和值,你可以考慮把這些值放在一個(gè)多帶帶的文件中,該文件中包括( web 和控制臺(tái))應(yīng)用程序配置。 你可以在“高級(jí)”項(xiàng)目模板中看到一個(gè)例子。

提示:有時(shí),你可能需要使用一個(gè)與在入口腳本中指定的應(yīng)用程序配置不同的控制臺(tái)命令。例如,你可能想使用 yii migrate命令來(lái)升級(jí)你的測(cè)試數(shù)據(jù)庫(kù),它被配置在每個(gè)測(cè)試套件。

要?jiǎng)討B(tài)地更改配置,只需指定一個(gè)自定義應(yīng)用程序的配置文件,通過(guò)appconfig選項(xiàng)來(lái)執(zhí)行命令:

yii  --appconfig=path/to/config.php ...
控制臺(tái)的控制器和行為

一個(gè)控制臺(tái)命令繼承自 yiiconsoleController 控制器類。 在控制器類中,定義一個(gè)或多個(gè)與控制器的子命令相對(duì)應(yīng)的動(dòng)作。在每一個(gè)動(dòng)作中,編寫你的代碼實(shí)現(xiàn)特定的子命令的適當(dāng)?shù)娜蝿?wù)。

當(dāng)你運(yùn)行一個(gè)命令時(shí),你需要指定一個(gè)控制器的路由。例如,路由 migrate/create 調(diào)用子命令對(duì)應(yīng)的yiiconsolecontrollersMigrateController::actionCreate() 動(dòng)作方法。

如果在執(zhí)行過(guò)程中提供的路由不包含路由 ID ,將執(zhí)行默認(rèn)操作(如 web 控制器)。

選項(xiàng)

通過(guò)覆蓋在 options() 中的方法,你可以指定可用于控制臺(tái)命令(controller/actionID)選項(xiàng)。這個(gè)方法應(yīng)該返回控制器類的公共屬性的列表。

當(dāng)運(yùn)行一個(gè)命令,你可以指定使用語(yǔ)法 --OptionName=OptionValue 選項(xiàng)的值。 這將分配OptionValue 到控制器類的 OptionName 屬性。

參數(shù)

除了選項(xiàng),命令還可以接收參數(shù)。參數(shù)將傳遞給請(qǐng)求的子命令對(duì)應(yīng)的操作方法。第一個(gè)參數(shù)對(duì)應(yīng)第一個(gè)參數(shù),第二個(gè)參數(shù)對(duì)應(yīng)第二個(gè)參數(shù),依次類推。

命令被調(diào)用時(shí),如果沒(méi)有足夠的參數(shù),如果有定義默認(rèn)值的情況下,則相應(yīng)的參數(shù)將采取默認(rèn)聲明的值;如果沒(méi)有設(shè)置默認(rèn)值,并且在運(yùn)行時(shí)沒(méi)有提供任何值,該命令將以一個(gè)錯(cuò)誤退出。

你可以使用 array 類型提示來(lái)指示一個(gè)參數(shù)應(yīng)該被視為一個(gè)數(shù)組。該數(shù)組通過(guò)拆分輸入字符串的逗號(hào)來(lái)生成。

下面的示例演示如何聲明參數(shù):

class ExampleController extends yiiconsoleController{
    // 命令 "yii example/create test" 會(huì)調(diào)用 "actionCreate("test")"
    public function actionCreate($name) { ... }

    // 命令 "yii example/index city" 會(huì)調(diào)用 "actionIndex("city", "name")"
    // 命令 "yii example/index city id" 會(huì)調(diào)用 "actionIndex("city", "id")"
    public function actionIndex($category, $order = "name") { ... }

    // 命令 "yii example/add test" 會(huì)調(diào)用 "actionAdd(["test"])"
    // 命令 "yii example/add test1,test2" 會(huì)調(diào)用 "actionAdd(["test1", "test2"])"
    public function actionAdd(array $name) { ... }
}
退出代碼

使用退出代碼是控制臺(tái)應(yīng)用程序開(kāi)發(fā)的最佳做法。

通常,執(zhí)行成功的命令會(huì)返回 0。如果命令返回一個(gè)非零數(shù)字,會(huì)認(rèn)為出現(xiàn)錯(cuò)誤。

該返回的數(shù)字作為出錯(cuò)代碼,用以了解錯(cuò)誤的詳細(xì)信息。

例如 1 可能代表一個(gè)未知的錯(cuò)誤,所有的代碼都將保留在特定的情況下:輸入錯(cuò)誤,丟失的文件等等。

要讓控制臺(tái)命令返回一個(gè)退出代碼,只需在控制器操作方法中返回一個(gè)整數(shù):

public function actionIndex(){
    if (/* some problem */) {
        echo "A problem occured!
";
        return 1;
    }
    // do something
    return 0;
}

你可以使用一些預(yù)定義的常數(shù):

Controller::EXIT_CODE_NORMAL 值為 0;

Controller::EXIT_CODE_ERROR 值為 1.

為控制器定義有意義的常量,以防有更多的錯(cuò)誤代碼類型,這會(huì)是一個(gè)很好的實(shí)踐。

格式和顏色

Yii 支持格式化輸出,如果終端運(yùn)行命令不支持的話則會(huì)自動(dòng)退化為非格式化輸出。

要輸出格式的字符串很簡(jiǎn)單。以下展示了如何輸出一些加粗的文字:

$this->stdout("Hello?
", Console::BOLD);

如果你需要建立字符串動(dòng)態(tài)結(jié)合的多種樣式,最好使用 ansiFormat :

$name = $this->ansiFormat("Alex", Console::FG_YELLOW);
echo "Hello, my name is $name.";

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21611.html

相關(guān)文章

  • Yii 修行之路 - Migration 數(shù)據(jù)遷移

    摘要:把所有的增量數(shù)據(jù)庫(kù)遷移提交到生產(chǎn)環(huán)境數(shù)據(jù)庫(kù)當(dāng)中。如果其中任意一個(gè)遷移提交失敗了,那么這條命令將會(huì)退出并停止剩下的那些還未執(zhí)行的遷移。執(zhí)行這條命令期間不會(huì)有任何的遷移會(huì)被提交或還原。 簡(jiǎn)述 數(shù)據(jù)遷移就是數(shù)據(jù)庫(kù)表在團(tuán)隊(duì)建的遷移操作,達(dá)到團(tuán)隊(duì)相互間的信息同步,數(shù)據(jù)統(tǒng)一。 數(shù)據(jù)庫(kù)遷移 一般步驟: 1、在 yii2 的 migrate 中,通常用來(lái)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)表進(jìn)行修改操作,主要對(duì)結(jié)構(gòu)和小部分?jǐn)?shù)...

    noONE 評(píng)論0 收藏0
  • Yii 修行之路 - Gii 代碼生成器

    摘要:簡(jiǎn)述是一個(gè)強(qiáng)大的代碼生成器,主要用于后臺(tái)代碼生成。下面列出由生成的文件,以便你研習(xí)功能和實(shí)現(xiàn),或修改它們控制器模型和視圖補(bǔ)充被設(shè)計(jì)成高度可定制和可擴(kuò)展的代碼生成工具。使用生成代碼是一個(gè)基于界面的代碼生成工具。 簡(jiǎn)述 Gii 是一個(gè)強(qiáng)大的代碼生成器,主要用于后臺(tái)代碼生成。 開(kāi)始 Gii Gii 是 Yii 中的一個(gè)模塊??梢酝ㄟ^(guò)配置應(yīng)用的 yiibaseApplication::modu...

    fuchenxuan 評(píng)論0 收藏0
  • Yii 修行之路 - Errors(錯(cuò)誤處理) & Logging(日志記錄)

    摘要:簡(jiǎn)述這里簡(jiǎn)單歸納總結(jié)關(guān)于的錯(cuò)誤處理和日志記錄的操作。錯(cuò)誤處理器會(huì)正確地設(shè)置響應(yīng)的狀態(tài)碼并使用合適的錯(cuò)誤視圖頁(yè)面來(lái)顯示錯(cuò)誤信息。記錄一個(gè)警告消息用來(lái)指示一些已經(jīng)發(fā)生的意外。的義務(wù)是正確處理日志消息。相應(yīng)的消息通過(guò)被記錄。 簡(jiǎn)述 這里簡(jiǎn)單歸納總結(jié)關(guān)于Yii的錯(cuò)誤處理和日志記錄的操作。 錯(cuò)誤處理(Errors) Yii 內(nèi)置了一個(gè)yiiwebErrorHandler錯(cuò)誤處理器,它使錯(cuò)誤處理更...

    _ang 評(píng)論0 收藏0
  • Yii 修行之路 - View 視圖渲染

    摘要:簡(jiǎn)述模塊是中的架構(gòu)的板塊,主要負(fù)責(zé)數(shù)據(jù)的展示,渲染模板文件,展示數(shù)據(jù)內(nèi)容。此外在一個(gè)視圖中還可以引入多個(gè)視圖文件,也是通過(guò)方法實(shí)現(xiàn)。布局文件的數(shù)據(jù)默認(rèn)以顯示,也可以用數(shù)據(jù)塊的形式渲染到視圖上。必須要確認(rèn)生成一次,才會(huì)正式生成新首頁(yè)。 簡(jiǎn)述 View模塊是Yii中的MVC架構(gòu)的V板塊,主要負(fù)責(zé)數(shù)據(jù)的展示,渲染模板文件,展示數(shù)據(jù)內(nèi)容。 基本概念 MVC在Yii里面有一個(gè)Views文件夾,里...

    Mr_houzi 評(píng)論0 收藏0
  • Yii修行之路 - Security 安全

    摘要:認(rèn)證事件類在登錄和注銷流程引發(fā)一些事件。成功注銷后引發(fā)。提供兩種授權(quán)方法存取控制過(guò)濾器和基于角色的存取控制。允許已認(rèn)證用戶執(zhí)行操作。指定一個(gè)回調(diào)函數(shù)用于判定該規(guī)則是否滿足條件。 簡(jiǎn)述 在程序開(kāi)發(fā)過(guò)程中,往往都不能忽視安全問(wèn)題,無(wú)論你的框架有多么完美,都會(huì)有破綻,所以完善自己的系統(tǒng),從程序開(kāi)發(fā)的安全角度去思考問(wèn)題,把一切潛在的危機(jī)扼殺在搖籃中。 認(rèn)證(Authentication) 認(rèn)證...

    AaronYuan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<