自动加载的原理是zend_application实例了zend_loader_autoloader,使其调用了spl_autoload_register(array(__class__, 'autoload')); 这样如果找不到的类就会调用此对象的autoload方法进行处理。
一个名称空间可以有多个加载器,迭代找出符合的自定义加载器后,其余的就不会使用了,一般我们只会针对一个名称空间注册一个自定义加载器或者直接使用默认的加载器。
注册名称空间方式分为两种:
当一个类没有找到并要求载入时,其类名交给Zend_Loader_Autoloader::autoload()处理,会经历以下几个过程:
自定义的加载器有以下几种形式:
立即学习“PHP免费学习笔记(深入)”;
$autoloader = Zend_Loader_Autoloader::getInstance(); $myAutoloaderClass = new my_Autoloader(); $autoloader->pushAutoloader($myAutoloaderClass, myNamespace);
$autoloader = Zend_Loader_Autoloader::getInstance();
function myAutoloaderFun(){ //TODO };
$autoloader->pushAutoloader('myAutoloaderFun', myNamespace);
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->pushAutoloader(array('类名', '方法'), myNamespace);
Zend加载器对象方法是Zend_Loader_Autoloader::_autoload。此方法会用call_user_func调用最终的加载方法如默认为array('Zend_Loader', 'loadClass')对当前对象进行加载。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号