多个框架spl_autoload_register自动加载类冲突的解决方法
不管是自己写php框架还是使用第三方框架, 都会用到spl_autoload_register实现自动加载类。
如果你的系统只使用了一个框架, 当然不会出问题, 但是如果你的系统要集成到其它框架, 经常会遇到spl_autoload_register冲突, 导致你的类或框架类无法自动加载。
解决的方法, 就是在你的类或命名空间中, 添加一个你的前缀, 然后在你的自动加载类中判断是不是你的前缀, 然后再加载。 实例demo如下: 如果我的代码要集成到其它框架, 我自己写的类有一个前缀 Qin, 使用命名空间也行。
然后在自动加载函数中进行判断
function autoload($class) {
if('Qin' == substr($class, 0, 3)) {
require $class . '.php';
}
}
当然上面只是一个简单示例, 你可以根据自己的情况进行优化。 然后再注册
spl_autoload_register('autoload');
