菜鸟常忽略的基础 - 将现有类改为自己的类

  • 作者:KK

  • 发表日期:2016.10.15


这个知识点官方有讲,但我还是见到有些新手提问一些问题时明明能用Yii::$classMap来实现他却不知道————算了吧,毕竟谅我自己去学一个软件也不能在第一次阅读官方资料时给完全记下来啊,特别是少用的

奔正题

其实yii里自动加载一个类的时候,会最优先检查这个类是否在Yii::$classMap里定义了路径,有的话就直接include

所以如果说我们使用yii\helpers\ArrayHelper::merge([1, 2, 3], [4])之前先执行

Yii::$classMap['yii\helpers\ArrayHelper'] = '/path/to/myclass.php';

这样就可以了,只要它没加载过ArrayHelper,你就可以在加载之前玩这一招,顺便啰嗦一下你修改的ArrayHelper一定要兼容它的调用哦!所以要继承yii\helpers\BaseArrayHelper对吧

但注意如果你想测试这个功能,在定义你自己的ArrayHelper时,注意namespace必须模仿下来,就是yii\helpers,类名也一样,文件名可以不一样,可以放在你喜欢的地方