摘要:可以在方法里實現例行檢查和屬性正常化檢查對象方法調用開始的三個階段都在構造函數里實現,這意味著當你得到一個對象的實例時,它已經被初始化為適當的狀態,可以被放心的使用。
組件
組件是YII框架application(應用)的主要組成部分,它是 [yiiaseComponent]的實例或者子類。組件有三個重要特征(功能):
屬性(properties)
事件(events)
行為(behaviors)
多帶帶或者組合使用這些特征,可以讓yii框架的類變得更加易用和可定制。舉個例子,引入一個用戶交互組件[yiijuiDataPickerdata picker wigets],可以很輕松的在視圖中生成一個日期選擇控件(jquery ui date picker).
use yiijuiDatePicker; echo DatePicker::widget([ "language" => "ru", "name" => "country", "clientOptions" => [ "dateFormat" => "yy-mm-dd", ], ]);
DatePicker掛件的屬性很容易被修改,原因就在于他繼承了類[yiiaseComponet]
盡管組件很強大,但是其開銷也大于普通的類對象,原因在于組件需要額外的內存和CPU時間去處理事件(events)和行為(behaviors).如果你的組件不需要事件和行為這兩個特征(功能),可以直接繼承[yiiaseObject],這樣你的組件在性能(效率)上和普通類對象一致,且支持屬性(properties).
編寫一個繼承[yiiaseComponent]或者[yiiaseObject]的類,需要遵循以下約定:
假設你重寫了構造函數,必須定義一個參數$config,作為構造函數的最后一個參數,此參數被傳遞給父類的構造函數使用
在重寫的構造函數的結尾必須調用父類的構造函數
假設你重寫了[yiiaseObject::init()|init()]方法,那么必須在重寫的init方法開始調用父類的init方法
舉個例子
namespace yiicomponentsMyClass; use yiiaseObject; class MyClass extends Object { public $prop1; public $prop2; public function __construct($param1, $param2, $config = []) { // ... initialization before configuration is applied parent::__construct($config); } public function init() { parent::init(); // ... initialization after configuration is applied } }
遵循如下示例,可使你的組件在創建時屬性即可被配置(初始化):
$component = new MyClass(1, 2, ["prop1" => 3, "prop2" => 4]); // alternatively $component = Yii::createObject([ "class" => MyClass::className(), "prop1" => 3, "prop2" => 4, ], [1, 2]);
提示: 使用[Yii::createOject()]的方式看起來更加復雜,但是因為[Yii::createObject]是基于依賴注入的實現,因此更加強大
[yiiaseObject]類強制實現如下生命周期:
在構造函數里實現預初始化,可以在這個時候設定默認的屬性值
通過$config配置對象,在構造函數里通過對象配置可以覆蓋默認值
在[yiiaseObject::init()|init()]方法里,進行初始化后的配置。可以在init方法里實現例行檢查和屬性正常化檢查
對象方法調用
開始的三個階段都在構造函數里實現,這意味著當你得到一個對象的實例時,它已經被初始化為適當的狀態,可以被放心的使用。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/20764.html
摘要:屬性在里,類的成員變量也被稱之為屬性,這些變量是類定義的一部分,被用來表示類實例的狀態區分不同類實例。不同之處在于,當屬性被讀時,關聯的方法被調用,當屬性被修改時,關聯的方法被調用。 屬性 在PHP里,類的成員變量也被稱之為屬性,這些變量是類定義的一部分,被用來表示類實例的狀態(區分不同類實例)。在具體的實踐中,你可能要經常處理可讀或者可寫屬性的特殊方式,舉個例子, 你可能想要給屬性...
摘要:運行來安裝指定的擴展。這更便于用戶辨別是否是的擴展。當用戶運行安裝一個擴展時,文件會被自動更新使之包含新擴展的信息。上述代碼表明該擴展依賴于包。例如,上述的條目聲明將對應于別名。為達到這個目的,你應當在公開發布前做測試。 簡述 擴展是專門設計的在 Yii 應用中隨時可拿來使用的, 并可重發布的軟件包。 基礎 例如, yiisoft/yii2-debug 擴展在你的應用的每個頁面底部添加...
摘要:上次的訪談,介紹了下可愛的依云醬,回憶傳送門。這里簡單地介紹下龍女仆,全名小林家的龍女仆,為什么介紹這部劇呢因為設計獅顏值同學也安利了這部。劇情簡介在獨身又勞累的小林劃重點一名程序員身邊突然出現的穿著女仆服裝的美少女托爾。 showImg(https://segmentfault.com/img/bVR6p5?w=900&h=385); 上次的訪談,介紹了下可愛的依云醬,回憶傳送門。不...
摘要:上次的訪談,介紹了下可愛的依云醬,回憶傳送門。這里簡單地介紹下龍女仆,全名小林家的龍女仆,為什么介紹這部劇呢因為設計獅顏值同學也安利了這部。劇情簡介在獨身又勞累的小林劃重點一名程序員身邊突然出現的穿著女仆服裝的美少女托爾。 showImg(https://segmentfault.com/img/bVR6p5?w=900&h=385); 上次的訪談,介紹了下可愛的依云醬,回憶傳送門。不...
摘要:框架的版本已經發布,版本最低要求是,將會在今年早些時候推出正式版。閱讀的代碼,能學到很多東西,代碼寫的很優雅,用到了很多版本的新特性。 yii框架的v-2.0-alpha版本已經發布,PHP版本最低要求是PHP-5.4,將會在今年早些時候推出正式版。閱讀yii2的代碼,能學到很多東西,代碼寫的很優雅,用到了很多php-5.4版本的新特性。 BaseYii這個類,在yii2框架中被稱作...
閱讀 3565·2023-04-25 14:20
閱讀 1179·2021-09-10 10:51
閱讀 1146·2019-08-30 15:53
閱讀 452·2019-08-30 15:43
閱讀 2307·2019-08-30 14:13
閱讀 2785·2019-08-30 12:45
閱讀 1199·2019-08-29 16:18
閱讀 1155·2019-08-29 16:12