0

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

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

spl_autoload_register('class_autoload');

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

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

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

4

1 回答 1

2

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

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

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

于 2013-08-03T08:46:43.460 回答