我有一个关于php中spl_autoload_register的问题。这就是说..
// Use default autoload implementation
spl_autoload_register(function($class){
//==========================================
//use foo => src\store\services\httprequest
//==========================================
if($class=="foo"){
$class='src\store\services\httprequest';
}
$class=root.'/'.$class.'.php';
$class=str_replace("\\","/",$class);
require($class);
});当我在类中使用'use foo‘时,我希望spl_autoload_register像src\store\services\httprequest...but一样使用它返回的redaclare。
我能解决这个问题吗?
感谢您的回复..
发布于 2017-04-10 20:21:01
class_exists() -检查是否定义了类
更改您的自动加载器,首先检查类是否已加载,如果已加载,则忽略它。问题是,当您多次加载类文件时,它将尝试重新声明类。
在require $class语句应该修复它之前执行类似的操作。还要注意false作为第二个参数的用法,以防止它自动加载。
if (class_exists($class, false)) {
return;
}我还建议使用require_once。这将防止您手动加载相同的文件。
https://stackoverflow.com/questions/43322863
复制相似问题