如果脚本需要,则自动加载类.如果我的php文件在另一个文件夹中呢


Autoload classes if script need them. What if my php file is in another folder?

我发现了一些有用的代码,可以帮助我保持代码的可读性。

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

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

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

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

如果指定的文件不存在,则

require_once会产生致命错误。错误控制运算符(@)不会改变这一点。请改用include_once,或者测试您尝试读取的文件是否确实存在。

您可以调用spl_autoload_register,每次传递不同的函数名。然后,自动加载器将调用这些函数中的每一个来尝试加载类。使用此功能可以编写一个类似于class_autoload的新函数,但它知道类文件在哪里,不能用当前的class_autoload加载。调用spl_autoload_register,将该新函数作为参数传递。当然,如果不更改class_autoload中的require_once,则永远不会调用该新函数;在自动加载器有机会尝试你的新功能之前,你的脚本就已经失效了。

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