gpt4 book ai didi

php - PHP自动加载器: ignoring non-existing include

转载 作者:行者123 更新时间:2023-12-03 09:01:19 26 4
gpt4 key购买 nike

我的自动装带器有问题:

public function loadClass($className) {
$file = str_replace(array('_', '\\'), '/', $className) . '.php';
include_once $file;
}

如您所见,这非常简单。我只是推断出该类的文件名并尝试包含它。我有一个问题。尝试加载不存在的类时出现异常(因为我有一个抛出异常的错误处理程序)。这很不方便,因为在不存在的类上使用class_exists()时也会触发该事件。您不希望在那里出现异常,仅返回“false”。

我通过在包含之前添加@来解决此问题(抑制所有错误)。但是,这样做的最大缺点是,其中包含的任何解析器/编译器错误(致命的)都不会显示(甚至在日志中也不显示),从而导致难以发现错误。

一次解决这两个问题的最佳方法是什么?最简单的方法是在自动加载器中包含以下内容(伪代码):
foreach (path in the include_path) {
if (is_readable(the path + the class name)) readable = true;
}
if (!readable) return;

但是我担心那里的表现。会疼很多吗?

(已解决)是这样的:
public function loadClass($className) {

$file = str_replace(array('_', '\\'), '/', $className) . '.php';
$paths = explode(PATH_SEPARATOR, get_include_path());
foreach ($paths as $path) {
if (is_readable($path . '/' . $file)) {
include_once $file;
return;
}
}

}

最佳答案

每个类只会调用一次,因此性能不成问题。

关于php - PHP自动加载器: ignoring non-existing include,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1324010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com