如果脚本需要它们,则自动加载类。如果我的php文件在另一个文件夹中怎么办?

时间:2013-08-03 08:41:53

标签: php autoload

我找到了有用的代码,可以帮助我保持代码的可读性。

function class_autoload($classname) {
    echo "class_autoload";
    @require_once ("class-{$classname}.php");
}

spl_autoload_register('class_autoload');

当服务器需要它们来运行我的代码时,它会加载类。 但现在我有一个问题: 我的一个php文件在另一个文件夹中,然后是其余文件夹。所以我不能用这个:

@require_once ("class-{$classname}.php");

我无法更改路径,因为另一个php文件将结束工作:/ 我现在应该做什么?

1 个答案:

答案 0 :(得分:2)

如果指定的文件不存在,

require_once会产生致命错误。错误控制操作符(@)不会更改它。请改用include_once,或者测试您尝试阅读的文件是否确实存在。

每次都可以调用spl_autoload_register传递不同的函数名称。然后,自动加载程序将调用其中的每个函数以尝试加载该类。使用此功能编写类似于class_autoload的新功能,但是它知道类文件的位置,您无法使用当前class_autoload加载。调用spl_autoload_register,将该新函数作为参数传递。当然,如果你不改变require_once中的class_autoload,那么新函数永远不会被调用;在自动加载器有机会尝试新功能之前,你的脚本已经死了。

另外,请查看PSR-0。这描述了类名应该如何转换为目录和文件名。在选择放置位置以及如何命名类文件时,请尝试遵循此标准。它让您和尝试理解您的代码的人们的生活更轻松。