_initialize()和__construct()的区别

2019-04-08

本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。 声明:
本博客欢迎转发,但请保留原作者信息!
博客:游钓四方的博客
邮箱:haibao1027@gmail.com
内容系本人学习、研究和总结,如有雷同,实属荣幸!

 今天项目经理让我做个一个功能页面,在查阅往常相同项目源码时遇到一个没有见过的函数 _initialize()Google一下知道了它是Thinkphp内置函数,查阅了一番资料写了几遍总结一下。

 _initialize()函数是在任何函数之前,都要执行的,当然也包括__construct()也就是构造函数。也就是说如果_initialize()函数存在,调用对象的任何方法都会导致_initialize()函数的自动调用,而_construct()函数仅仅在创建一次,跟其它方法调用没有关系。

 __construct()函数它是双下划线,而_initialize()函数是单下划线

 如果父子类均有_initialize()函数,则子类覆盖父类,如果子类没有而父类有,则子类继承父类。

 默认情况下,子类的构造函数不会自动调用父类的构造函数。在调用子类对象的_initialize()函数时,也不会导致自动调用父类的_initialize()函数。 实际编写子类的构造函数时,一般都要加上父类构造函数的主动调用parent::__construct(),否则会导致子类对象空指针的异常, 如 Call to a menmber function assign() on anon-obiect

章节列表