2014-03-03 32 views
1

我看到的答案类似的问题,但他们没有工作对我来说 这是我实现的功能:如何防止spl_autoload_register加载本地PHP类

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

所以当我说

$user = new User(); 

它工作正常,因为我有一个User.php文件里面的类文件夹类的defenition ,但是当我使用本地PHP类如

$date = new Date(); 

我得到以下错误:

致命错误:require_once()[function.require]:失败开口所需 '类/ Date.php'

我试图在try块surrouding放在require_once但它确实工作,我仍然得到相同的错误

任何想法?

+0

也许这个主题可以帮到您吗? http://stackoverflow.com/questions/9539422/strange-php-autoload-issue –

+0

谢谢,为每个类名添加一个主要的反斜杠?这似乎不正确吗?我以前从未在专业代码中见过它,这是唯一的方法吗?我的意思是必须有一些PHP人员为我失踪的这个问题做了些什么 – Jack

回答

1

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

如果它是一个PHP本地类,它将工作,否则它会给你一个错误。

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