乐愚社区Beta

 编程语言  >  _initialize()和__construct()的区别

_initialize()和__construct()的区别

這些年來  L0  • 2020-03-15 • 回复 0 • 最后编辑于2020-03-15 22:42 • 只看楼主举报    

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

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

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

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

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



还没注册帐号?快来注册社区帐号,和我们一起嗨起来!
关于本社区

集各类兴趣爱好于一身的轻量化交流社区,在此您可以和他人一起分享交流您觉得有价值的内容,社区鼓励大家发表原创内容,为社区添砖加瓦!

发帖奖励 → 社区版规 → 招聘版主 →
推荐版块
扫描二维码下载社区APP
回到顶部