• 技术文章 >php教程 >php手册

    Zend_Loader_Autoloader是如何工作的

    2016-06-13 09:38:50原创489
    自动加载的原理是Zend_Application实例了Zend_Loader_Autoloader,使其调用了spl_autoload_register(array(__CLASS__, 'autoload')); 这样如果找不到的类就会调用此对象的autoload方法进行处理。

    一个名称空间可以有多个加载器,迭代找出符合的自定义加载器后,其余的就不会使用了,一般我们只会针对一个名称空间注册一个自定义加载器或者直接使用默认的加载器。

    注册名称空间方式分为两种:

    当一个类没有找到并要求载入时,其类名交给Zend_Loader_Autoloader::autoload()处理,会经历以下几个过程:

    自定义的加载器有以下几种形式:

    1. 一个实现了Zend_Loader_Autoloader_Interface接口的对象
    2. $autoloader = Zend_Loader_Autoloader::getInstance();
      $myAutoloaderClass = new my_Autoloader();
      $autoloader->pushAutoloader($myAutoloaderClass, myNamespace);
      
    3. 一个函数
    4. $autoloader = Zend_Loader_Autoloader::getInstance();
      function myAutoloaderFun(){ //TODO };
      $autoloader->pushAutoloader('myAutoloaderFun', myNamespace);
      
    5. 以回调方式(callback)调用一个对象或类的方法.(回掉函数call_user_func)
    6. $autoloader = Zend_Loader_Autoloader::getInstance();
      $autoloader->pushAutoloader(array('类名', '方法'), myNamespace);
      

    Zend加载器对象方法是Zend_Loader_Autoloader::_autoload。此方法会用call_user_func调用最终的加载方法如默认为array('Zend_Loader', 'loadClass')对当前对象进行加载。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:ZF Rewrite路由后$this->url的问题 下一篇:PHP图片的裁剪与缩放
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 完整邮件发送类• 学习PHP重定向的三种方法• PHP中根据IP地址判断城市实现城市切换或跳转代码• PHP安全性漫谈• php自动跳转中英文页面
    1/1

    PHP中文网