如何防止spl_autoload_register加载本机PHP类

时间:2014-03-03 12:49:05

标签: php oop

我看到了类似问题的答案,但没有一个对我有用 这是我对函数的实现:

 spl_autoload_register(function($class){
        require_once 'classes/'. $class .'.php';
});

所以当我说

 $user = new User();

它工作正常,因为我在class文件夹中有一个带有类defenition的User.php文件 但是当我使用像

这样的本机PHP类时
 $date = new Date(); 

我收到以下错误:

致命错误:require_once()[function.require]:无法打开所需的'classes / Date.php'

我尝试在try块中包含require_once,但它确实有效,我仍然得到相同的错误

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用file_exists检查您的类目录中是否有一个以$class命名的类。如果没有,你不需要它。

如果它是PHP本机类,它将起作用,否则会引发错误。

spl_autoload_register(function($class){
    if (file_exists('classes/'. $class .'.php'))
        require_once 'classes/'. $class .'.php';
});