2

我正在尝试使用 spl_autoload_register 将实例化对象用作自动加载器。可能吗?我在几个地方看到人们使用类静态函数作为自动加载器,而不是对象。

例子:

class loadFile{
    function loadObject($object){
    //load object here
    }
}
$loadmefiles = new loadFile();
//use $loadmefiles->loadObject() as autoloader
spl_autoload_register();
$goat = new Animal('goat');

希望你明白我在说什么。

4

2 回答 2

10

这是通过将数组传递给spl_autoload_register:第一个元素是对象,第二个元素是方法的名称作为字符串:

spl_autoload_register(array($loadmefiles, 'loadObject'));

可调用文档中:

实例化对象的方法作为数组传递,该数组包含索引 0 处的对象和索引 1 处的方法名称。

于 2012-12-13T03:50:10.920 回答
0

您可以将其设为静态作为替代方案。

spl_autoload_register(function($class)
{
    Pi_loader::autoload($class);
});

如果不...

spl_autoload_register(function($class)
{
    $loader = new Pi_loader();
    $loader->autoload($class);
});
于 2019-10-17T11:40:53.890 回答