前面我們知道了問題所在,那麼PHP是怎麼解決這個辦法的呢?因為是yii2,所以我們用yii2的方式簡單介紹一下,我把yii2的核心程式碼整合了一下,來說php實作依賴注入的過程。
在使用過yii2開發的同學,對Yii::createObject不陌生,他就是依賴注入的一個“入口”,我把它提出來改一下:
//$p 可以想象的yii2的配置文件,如$p = ['class'=>'sdk/Test', 'file'=>'xxxx']; // 'class' 是将要实现的类,‘file’是将要实现的对象的属性 function createObject($p){ $class = $p['class']; unset($p['class']); $obj = new $class;//require 使用的是 autoload 实现的 foreach($p as $f => $v){ $class->$f = $v; } return $obj;
當然,yii2的createObject遠遠不止這些,我寫成這麼簡單只是為了說明php實現「依賴注入」的一種方式,當然它是非常簡陋的(它不具備最基本的容錯功能,而且不具備依賴注入的全部功能,比如參數管理、兼容閉包等,等我們真正看完yii2 DI實現的時候,這些都會浮現出來)。
以上就是yii2 隨筆(七)依賴注入-(2)php依賴注入的簡單實現的內容,更多相關內容請關注PHP中文網(www.php.cn)!