我正在使用这种方法来加载类:
spl_autoload_register(function($class) {
require_once 'classes/' . $class . '.php';
});
关于这些功能,我仍然有一些东西我很难理解。
据我了解,每当我创建一个对象实例时,它都会触发该函数并加载该对象的类。
所以,如果我要做类似的事情:
$myObj = new myObj();
该函数将捕获这种减速,并将require_once 'classes/myObj.php'
.
如果我创建另一个实例会发生什么?例如:
$myObj1 = new myObj();
$myObj2 = new myObj();
它会触发该功能两次吗?或者它注意到它是同一个类,所以它不会重复两次?无论如何,这就是我使用的原因,require_once
所以我不会超载。但是,我仍然想知道它实际上做了什么。
还有一件事,为什么当我在做这样的代码时:
echo someOtherClass::getDesc();
该函数仍将其识别为类声明,然后需要该文件classes/someOtherClass.php
。为什么会这样?我还没有声明一个新对象,事实上,我没有对象是 someOtherClass 的一个实例。这是否意味着每当我使用对象函数时,它都会尝试包含该类?或者每当我使用静态函数时?
提前致谢!