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

annuaire recherche
閱讀前篇 簡(jiǎn)介 Yii 是什么 從 Yii 1.1 升級(jí) 入門 安裝 Yii 運(yùn)行應(yīng)用 第一次問候 使用Forms 數(shù)據(jù)庫(kù)應(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) 請(qǐng)求處理 運(yùn)行概述 啟動(dòng)引導(dǎo)(Bootstrapping) 路由和創(chuàng)建URL 請(qǐng)求(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ù)庫(kù)工作 數(shù)據(jù)庫(kù)訪問 (Data Access Objects) 查詢生成器(Query Builder) 活動(dòng)記錄(Active Record) 數(shù)據(jù)庫(kù)遷移(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) 分頁(yè)(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ù)緩存 片段緩存 頁(yè)面緩存 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文檔 測(cè)試 概述(Overview) 配置測(cè)試環(huán)境(Testing environment setup) 單元測(cè)試(Unit Tests) 功能測(cè)試(Function Tests) 驗(yàn)收測(cè)試(Acceptance Tests) 測(cè)試夾具(Fixtures) 高級(jí)專題 高級(jí)應(yīng)用模板 創(chuàng)建自定義應(yīng)用程序結(jié)構(gòu) 控制臺(tái)命令 核心驗(yàn)證器(Core Validators) 國(guó)際化 收發(fā)郵件 性能優(yōu)化 共享主機(jī)環(huán)境 模板引擎 集成第三方代碼 小部件 Bootstrap 小部件 Jquery UI 助手類 概述 Array 助手(ArrayHelper) Html 助手(Html) Url 助手(Url)
personnages

組件(Component)

組件(Component)

組件是 Yii 應(yīng)用的主要基石。是 yii\base\Component 類或其子類的實(shí)例。三個(gè)用以區(qū)分它和其它類的主要功能有:

  • 屬性(Property)
  • 事件(Event)
  • 行為(Behavior)

或單獨(dú)使用,或彼此配合,這些功能的應(yīng)用讓 Yii 的類變得更加靈活和易用。以小部件 yii\jui\DatePicker 來舉例,這是個(gè)方便你在?視圖?中生成一個(gè)交互式日期選擇器的 UI 組件:

use yii\jui\DatePicker;

echo DatePicker::widget([
    'language' => 'zh-CN',
    'name'  => 'country',
    'clientOptions' => [
        'dateFormat' => 'yy-mm-dd',
    ],
]);

這個(gè)小部件繼承自 yii\base\Component,它的各項(xiàng)屬性改寫起來會(huì)很容易。

正是因?yàn)榻M件功能的強(qiáng)大,他們比常規(guī)的對(duì)象(Object)稍微重量級(jí)一點(diǎn),因?yàn)樗麄円褂妙~外的內(nèi)存和 CPU 時(shí)間來處理?事件?和?行為。如果你不需要這兩項(xiàng)功能,可以繼承 yii\base\Object 而不是 yii\base\Component。這樣組件可以像普通 PHP 對(duì)象一樣高效,同時(shí)還支持屬性(Property)功能。

當(dāng)繼承 yii\base\Component 或 yii\base\Object 時(shí),推薦你使用如下的編碼風(fēng)格:

  • 若你需要重寫構(gòu)造方法(Constructor),傳入?$config?作為構(gòu)造器方法最后一個(gè)參數(shù),然后把它傳遞給父類的構(gòu)造方法。
  • 永遠(yuǎn)在你重寫的構(gòu)造方法結(jié)尾處調(diào)用一下父類的構(gòu)造方法。
  • 如果你重寫了 yii\base\Object::init() 方法,請(qǐng)確保你在?init?方法的開頭處調(diào)用了父類的?init?方法。

例子如下:

namespace yii\components\MyClass;

use yii\base\Object;

class MyClass extends Object{
    public $prop1;
    public $prop2;

    public function __construct($param1, $param2, $config = [])
    {
        // ... 配置生效前的初始化過程

        parent::__construct($config);
    }

    public function init()
    {
        parent::init();

        // ... 配置生效后的初始化過程
    }
}

另外,為了讓組件可以在創(chuàng)建實(shí)例時(shí)能被正確配置,請(qǐng)遵照以下操作流程:

$component = new MyClass(1, 2, ['prop1' => 3, 'prop2' => 4]);
// 方法二:$component = \Yii::createObject([
    'class' => MyClass::className(),
    'prop1' => 3,
    'prop2' => 4,
], [1, 2]);

補(bǔ)充:盡管調(diào)用 Yii::createObject() 的方法看起來更加復(fù)雜,但這主要因?yàn)樗屿`活強(qiáng)大,它是基于依賴注入容器實(shí)現(xiàn)的。

yii\base\Object 類執(zhí)行時(shí)的生命周期如下:

  1. 構(gòu)造方法內(nèi)的預(yù)初始化過程。你可以在這兒給各屬性設(shè)置缺省值。
  2. 通過?$config?配置對(duì)象。配置的過程可能會(huì)覆蓋掉先前在構(gòu)造方法內(nèi)設(shè)置的默認(rèn)值。
  3. 在 yii\base\Object::init() 方法內(nèi)進(jìn)行初始化后的收尾工作。你可以通過重寫此方法,進(jìn)行一些良品檢驗(yàn),屬性的初始化之類的工作。
  4. 對(duì)象方法調(diào)用。
前三步都是在對(duì)象的構(gòu)造方法內(nèi)發(fā)生的。這意味著一旦你獲得了一個(gè)對(duì)象實(shí)例,那么它就已經(jīng)初始化就緒可供使用。
Article précédent: Article suivant: