Home >Backend Development >PHP Tutorial >spl_autoload_register 参数问题

spl_autoload_register 参数问题

WBOY
WBOYOriginal
2016-06-06 20:38:471468browse

我看到symfony2的Psr4ClassLoader类中有一句是:

<code>public function register($prepend = false)
    {
        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
    }
</code>

spl_autoload_register函数的第一个参数是字符串的话,我能理解是将名为字符串的函数加到autoload栈中。但是这里是一个数组是什么意思呢?

回复内容:

我看到symfony2的Psr4ClassLoader类中有一句是:

<code>public function register($prepend = false)
    {
        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
    }
</code>

spl_autoload_register函数的第一个参数是字符串的话,我能理解是将名为字符串的函数加到autoload栈中。但是这里是一个数组是什么意思呢?

出现这个问题说明你没有掌握php描述和处理回调的几种方式。
能通过is_callable的可以直接被一系列函数处理,参数是能够定位调用位置的字符串或数组。

Callable的回调类型有几种,题主说的是简单回调类型,传递一个字符串就是回调这个字符串命名的函数。还有传入数组的话,分两种:一种是静态方法回调,一种是对象方法回调。题主贴的代码是对象方法回调,调用本类的$this->loadClass()方法,当然,如果loadClass是静态方法,把$this换成当前类的名字以字符串形式传递就行,或者这么写:spl_autoload_register('MyClass::loadClass', true, $prepend);。这里是回调类型官网地址,可以看看:Callback 回调类型

如果是数组,就是一个类里的对象,
相当于$this->loadClass

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn