在Yii中創建新對象或者初始化已經存在的對象廣泛的使用配置,配置通常包含被創建對象的類名和一組將要賦值給對象的屬性的初始值,這里的屬性是Yii2的屬性。
還可以在對象的事件上綁定事件處理器,或者將行為附加到對象上。從而在定義了對象的初始值的同時,充分規定對象的運行時的動態特性。 ? ? ? ? ? ? ? (推薦學習:yii框架)
以下代碼中的配置被用來創建并初始化一個數據庫連接:
$config?=?[ ????'class'?=>?'yiidbConnection', ????'dsn'?=>?'mysql:host=127.0.0.1;dbname=demo', ????'username'?=>?'root', ????'password'?=>?'', ????'charset'?=>?'utf8', ]; $db?=?Yii::createObject($config);
Yii::createObject()是Yii2中最常用的用來創建對象的方法,其內容是從DI Container中去取的對象。
這個方法方法接受一個配置數組并根據數組中指定的類名創建對象,對象實例化后,剩余的參數被用來初始化對象的屬性,事件和行為。
在Yii2.1中,配置數組中用來表示類名的鍵值由class變成了__class,但是配置的原理是不變的。
對于已存在的對象,可以使用 Yii::configure() 方法根據配置去初始化其屬性, 就像這樣:
Yii::configure($object,?$config);
請注意,如果配置一個已存在的對象,那么配置數組中不應該包含指定類名的 class 元素。
配置是Yii2的一個特色
在編程中,有個非常重要的概念叫“委托”,就是一個對象A可以依靠另一個對象B去完成特定的功能,典型的應用就是策略模式了。
要實現“委托”,要有這么個流程:在對象A實例化時注入另一個對象B;A持有對象B;對象A委托對象B去完成特定的功能。
“注入”“持有”“委托”都是設計模式中的高頻詞匯,通過這些操作可以擴展類的功能。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END