我制作了一个按预期工作的自动加载器类,但我发现了一个奇怪的行为.当我回显出发现的类的结果时,会传递给处理spl_autoload_register()函数的方法.我看到我有双打.就像脚本被调用两次一样,并且因为它是一个单例,数据在我的情况下构建了2个数组.
我正在使用这种方法来创建我的单身人士
public static function init()
{
if (!isset(self::$instance))
self::$instance = new self();
return self::$instance;
}
Run Code Online (Sandbox Code Playgroud)
然后我将构造函数设置为private.我已经通过每个方法调试试图看看它在哪里创建自己的克隆.
我怀疑我的类和类已被克隆到spl_autoload_register()函数中的某个地方.
任何帮助,将不胜感激.
让构造函数打印一些东西。只是为了看看它是否真的被多次调用。您正在使用两个自动加载器,对吗?我会在应用程序的一开始(可能是index.php)设置 sp_autoload_register 并注册所有必需的自动加载器。但首先要测试构造函数是否被多次调用。
// 首先我会改变这个:
private static $instance = null;
Run Code Online (Sandbox Code Playgroud)
// 初始化函数
public static function init() {
if (self::$instance === null) {
self::$instance = new Autoload();
}
return self::$instance;
}
Run Code Online (Sandbox Code Playgroud)