> 백엔드 개발 > PHP 튜토리얼 > spl_autoload_register 参数问题

spl_autoload_register 参数问题

WBOY
풀어 주다: 2016-06-06 20:38:47
원래의
1473명이 탐색했습니다.

我看到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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿