2016-09-28 101 views
3

我想擴展或替換yii\db\ActiveQuery與我自己的類,並讓整個應用程序使用它。Yii2擴展或替換核心類

這是爲了在this GitHub issue的底部引入由CedricYii引用的@alias功能。

由於某些更改函數的私有性質,我可能不得不將其替換。

這可能嗎?或者我將不得不分叉存儲庫?

回答

3

爲此使用Dependency Injection Container

寫下您的應用程序引導代碼:

Yii::$container->set('yii\db\ActiveQuery', 'app\components\ActiveQuery'); 
+1

謝謝,這奇妙的工作! – Arth

+0

任何想法爲什麼它不適用於核心驗證器? Yii :: $ container-> set('yii \ validators \ Validator','app \ components \ Validator'); – SenG

+0

這是「擴展」還是隻是替換類?這與設置'Yii :: $ classMap ['yii \ db \ ActiveQuery'] ='@ common/components/ActiveQuery.php';'? – friek108