Yii2怎么覆盖vendor中的库文件
首先我们要了 解一下 Yii 自动加载类的机制
我们打开一个web应用的入口文件Index.php
// 这个是第三方的autoloader require(__DIR__ . '/../../vendor/autoload.php'); // 这个是Yii的Autoloader,放在最后面,确保其插入的autoloader会放在最前面 require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
打开 Yii.php
require(__DIR__ . '/BaseYii.php'); //这里autoload方法 就是读取映射表 classes.php // 重点看这个 spl_autoload_register spl_autoload_register(['Yii', 'autoload'], true, true); // 下面的语句读取了一个映射表 Yii::$classMap = include(__DIR__ . '/classes.php');
打开 classes.php
return [ 'yii\base\Action' => YII2_PATH . '/base/Action.php', 'yii\base\ActionEvent' => YII2_PATH . '/base/ActionEvent.php', ... ... 'yii\widgets\PjaxAsset' => YII2_PATH . '/widgets/PjaxAsset.php', 'yii\widgets\Spaceless' => YII2_PATH . '/widgets/Spaceless.php',];
这映射表,key是含空间名的类名,value是 文件位置
讲到这里基本就明白了,那么我们知道vendor第三方库的文件是不建议修改的(git一般忽略提交的),那如果要修改,就需要我们在项目文件夹创建文件覆盖vendor库的文件,按照上面Yii自动加载类的原理,我们需要如下截胡。
更多内容请付费阅读
评论区
请登陆 后评论!