php __autoload 在有命名空间的时候失效(使用的局限性)

Posted Sentiger

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php __autoload 在有命名空间的时候失效(使用的局限性)相关的知识,希望对你有一定的参考价值。

    如果要使用__autoload方法,则不能再之前使用namespace,
    使用命名空间,则至少php5.3不再调用__autoload方法
    因此如果需要使用__autoload和命名空间,那么至少在整合的程序中不能使用命名空间
    也就是说namespace与__autoload功能在一个文件中两者只能用其一
    也就是说,如果使用了命名空间,那么在自动加载类的文件创建和访问对象只能使用命名全称进行访问


    实际上的操作应该在此函数中调用类加载处理对象的获取加载列表获取函数,返回加载列表,然后逐一对加载项进行加载
    这样处理,则可以在此定义加载路径的初始位置,加载会更方便,但是首先要静态加载 加载处理对象的类文件(对象可以在其文件中采用类静态属性表示)。
    因为可以定义初始地址,也可以根据规则,指定加载文件的地址变化规则进行演变


    自动加载不能处理AOP编程,因此APP对象需要能动态根据参数定义自动加载处理类对象,并生成各切面对象,并注册到调用队列中去
    切面编程实际上就是事件关联编程,在合适的时机调用合适的处理过程。

 

可以用

spl_autoload_register代替

以上是关于php __autoload 在有命名空间的时候失效(使用的局限性)的主要内容,如果未能解决你的问题,请参考以下文章

PHP自动加载autoload和命名空的应用

PHP自动加载autoload和命名空的应用

php命名空间+spl_autoload_register实现类的自动加载

PHP 类的命名空间 和自动载入

include与__autoload与命名空间namespace与PSR4详解

现代php编程