2016-09-28 174 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