亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

annuaire recherche
閱讀前篇 簡介 Yii 是什么 從 Yii 1.1 升級 入門 安裝 Yii 運(yùn)行應(yīng)用 第一次問候 使用Forms 數(shù)據(jù)庫應(yīng)用 使用 Gii 生成代碼 進(jìn)階 應(yīng)用結(jié)構(gòu) 概述 入口腳本 應(yīng)用(Applications) 應(yīng)用組件(Application Components) 控制器(Controllers) 模型(Models) 視圖(views) 模塊(Modules) 過濾器(Filters) 小部件(Widgets) 前端資源(Assets) 擴(kuò)展(Extensions) 請求處理 運(yùn)行概述 啟動(dòng)引導(dǎo)(Bootstrapping) 路由和創(chuàng)建URL 請求(Requests) 響應(yīng)(Responses) Sessions 和 Cookies 錯(cuò)誤處理(Handling Errors) 日志(Logging) 關(guān)鍵概念 組件(Component) 屬性(Property) 事件(Events) 行為(Behaviors) 配置(Configurations) 別名(Aliases) 類自動(dòng)加載(Autoloading) 服務(wù)定位器(Service Locator) 依賴注入容器(Dependency Injection Container) 配合數(shù)據(jù)庫工作 數(shù)據(jù)庫訪問 (Data Access Objects) 查詢生成器(Query Builder) 活動(dòng)記錄(Active Record) 數(shù)據(jù)庫遷移(Migrations) Sphinx Redis MongoDB Elasticsearch 接收用戶數(shù)據(jù) 創(chuàng)建表單(Creating Forms) 輸入驗(yàn)證(Validating Input) 文件上傳(Uploading Files) 收集列表輸入(Collecting Tabular Input) 多模型的復(fù)合表單(Getting Data for Multiple Models) 顯示數(shù)據(jù) 格式化輸出數(shù)據(jù)(Data Formatting) 分頁(Pagination) 排序(Sorting) 數(shù)據(jù)提供器(Data Providers) 數(shù)據(jù)小部件(Data Widgets) 客戶端腳本使用(Working with Client Scripts) 主題(Theming) 安全 認(rèn)證(Authentication) 授權(quán)(Authorization) 處理密碼(Working with Passwords) 客戶端認(rèn)證(Auth Clients) 最佳安全實(shí)踐(Best Practices) 緩存 概述 數(shù)據(jù)緩存 片段緩存 頁面緩存 HTTP 緩存 RESTfull Web服務(wù) 快速入門(Quick Start) 資源(Resources) 控制器(Controllers) 路由(Routing) 格式化響應(yīng)(Response Formatting) 授權(quán)認(rèn)證(Authentication) 速率限制(Rate Limiting) 版本(Versioning) 錯(cuò)誤處理(Error Handling) 開發(fā)工具 調(diào)試工具欄和調(diào)試器 使用Gii生成代碼 生成API文檔 測試 概述(Overview) 配置測試環(huán)境(Testing environment setup) 單元測試(Unit Tests) 功能測試(Function Tests) 驗(yàn)收測試(Acceptance Tests) 測試夾具(Fixtures) 高級專題 高級應(yīng)用模板 創(chuàng)建自定義應(yīng)用程序結(jié)構(gòu) 控制臺命令 核心驗(yàn)證器(Core Validators) 國際化 收發(fā)郵件 性能優(yōu)化 共享主機(jī)環(huán)境 模板引擎 集成第三方代碼 小部件 Bootstrap 小部件 Jquery UI 助手類 概述 Array 助手(ArrayHelper) Html 助手(Html) Url 助手(Url)
personnages

控制臺命令

控制臺命令

除了用于構(gòu)建 Web 應(yīng)用程序的豐富功能,Yii 中也有一個(gè)擁有豐富功能的控制臺,它們主要用于創(chuàng)建網(wǎng)站后臺處理的任務(wù)。

控制臺應(yīng)用程序的結(jié)構(gòu)非常類似于 Yii 的一個(gè) Web 應(yīng)用程序。它由一個(gè)或多個(gè) yii\console\Controller 類組成,它們在控制臺環(huán)境下通常被稱為“命令”。每個(gè)控制器還可以有一個(gè)或多個(gè)動(dòng)作,就像 web 控制器。

兩個(gè)項(xiàng)目模板(基礎(chǔ)模版和高級模版)都有自己的控制臺應(yīng)用程序。你可以通過運(yùn)行?yii?腳本,在位于倉庫的基本目錄中運(yùn)行它。 當(dāng)你不帶任何參數(shù)來運(yùn)行它時(shí),會給你一些可用的命令列表:

Running ./yii command for help output

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

  • yii\console\controllers\AssetController - 允許合并和壓縮你的 JavaScript 和 CSS 文件。在?資源 - 使用 asset 命令?一節(jié)可獲取更多信息。
  • yii\console\controllers\CacheController - 清除應(yīng)用程序緩存。
  • yii\console\controllers\FixtureController - 管理用于單元測試 fixture 的加載和卸載。 這個(gè)命令的更多細(xì)節(jié)在?Testing Section about Fixtures.
  • yii\console\controllers\HelpController - 提供有關(guān)控制臺命令的幫助信息,這是默認(rèn)的命令并會打印上面截圖所示的輸出。
  • yii\console\controllers\MessageController - 從源文件提取翻譯信息。 要了解更多關(guān)于這個(gè)命令的用法,請參閱?I18N 章節(jié).
  • yii\console\controllers\MigrateController - 管理應(yīng)用程序數(shù)據(jù)庫遷移。 在?數(shù)據(jù)庫遷移章節(jié)?可獲取更多信息。

用法

你可以使用以下語法來執(zhí)行控制臺控制器操作:

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

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

例如,將 yii\console\controllers\MigrateController::actionUp() 限制 5 個(gè)數(shù)據(jù)庫遷移并將 yii\console\controllers\MigrateController::$migrationTable 設(shè)置為?migrations?應(yīng)該這樣調(diào)用:

yii migrate/up 5 --migrationTable=migrations

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

入口腳本

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

#!/usr/bin/env php<?php/**
 * Yii console bootstrap file.
 */

defined('YII_DEBUG') or define('YII_DEBUG', true);

require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/config/console.php');

$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);

該腳本將被創(chuàng)建為你應(yīng)用程序中的一部分;你可以根據(jù)你的需求來修改它。如果你不需要記錄錯(cuò)誤信息或者希望提高整體性能,YII_DEBUG?常數(shù)應(yīng)定義為?false。 在基本的和高級的兩個(gè)應(yīng)用程序模板中,控制臺應(yīng)用程序的入口腳本在默認(rèn)情況下會啟用調(diào)試模式,以提供給開發(fā)者更好的環(huán)境。

配置

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

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

提示:有時(shí),你可能需要使用一個(gè)與在入口腳本中指定的應(yīng)用程序配置不同的控制臺命令。例如,你可能想使用?yii migrate?命令來升級你的測試數(shù)據(jù)庫,它被配置在每個(gè)測試套件。要?jiǎng)討B(tài)地更改配置,只需指定一個(gè)自定義應(yīng)用程序的配置文件,通過appconfig選項(xiàng)來執(zhí)行命令:

yii <route> --appconfig=path/to/config.php ...

創(chuàng)建你自己的控制臺命令

控制臺的控制器和行為

一個(gè)控制臺命令繼承自 yii\console\Controller 控制器類。 在控制器類中,定義一個(gè)或多個(gè)與控制器的子命令相對應(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)用子命令對應(yīng)的yii\console\controllers\MigrateController::actionCreate() 動(dòng)作方法。 如果在執(zhí)行過程中提供的路由不包含路由 ID ,將執(zhí)行默認(rèn)操作(如 web 控制器)。

選項(xiàng)

通過覆蓋在 yii\console\Controller::options() 中的方法,你可以指定可用于控制臺命令(controller/actionID)選項(xiàng)。這個(gè)方法應(yīng)該返回控制器類的公共屬性的列表。 當(dāng)運(yùn)行一個(gè)命令,你可以指定使用語法?--OptionName=OptionValue?選項(xiàng)的值。 這將分配?OptionValue?到控制器類的?OptionName?屬性。

If the default value of an option is of an array type and you set this option while running the command, the option value will be converted into an array by splitting the input string on any commas.

參數(shù)

除了選項(xiàng),命令還可以接收參數(shù)。參數(shù)將傳遞給請求的子命令對應(yīng)的操作方法。第一個(gè)參數(shù)對應(yīng)第一個(gè)參數(shù),第二個(gè)參數(shù)對應(yīng)第二個(gè)參數(shù),依次類推。 命令被調(diào)用時(shí),如果沒有足夠的參數(shù),如果有定義默認(rèn)值的情況下,則相應(yīng)的參數(shù)將采取默認(rèn)聲明的值;如果沒有設(shè)置默認(rèn)值,并且在運(yùn)行時(shí)沒有提供任何值,該命令將以一個(gè)錯(cuò)誤退出。

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

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

class ExampleController extends \yii\console\Controller{
    // 命令 "yii example/create test" 會調(diào)用 "actionCreate('test')"
    public function actionCreate($name) { ... }

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

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

退出代碼

使用退出代碼是控制臺應(yīng)用程序開發(fā)的最佳做法。通常,執(zhí)行成功的命令會返回?0。如果命令返回一個(gè)非零數(shù)字,會認(rèn)為出現(xiàn)錯(cuò)誤。 該返回的數(shù)字作為出錯(cuò)代碼,用以了解錯(cuò)誤的詳細(xì)信息。例如?1?可能代表一個(gè)未知的錯(cuò)誤,所有的代碼都將保留在特定的情況下:輸入錯(cuò)誤,丟失的文件等等。

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

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

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

  • Controller::EXIT_CODE_NORMAL?值為?0;
  • Controller::EXIT_CODE_ERROR?值為?1.

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

格式和顏色

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

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

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

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

$name?=?$this->ansiFormat('Alex',?Console::FG_YELLOW);
echo?"Hello,?my?name?is?$name.";
Article précédent: Article suivant: