搜索
系统检测到您的用户名不符合规范:

【笔记】架构函数的区别

浏览:532 发布日期:2019年03月01日 分类:功能实现
【笔记】框架架构函数initialize和php内置架构函数__construct的区别
这两天在学习框架的过程中对比了控制器架构函数initialize和php架构函数__construct的相关问题,在控制器中可以使用initialize函数来完成控制器初始化,值得注意的是在5.1以前的版本例如3.2+ ,5.0+的版本该函数是__initialize,5.1版本对该函数重新命名为了和模块初始化函数一致,该函数是由__construct进行调用,众所周知,该函数是php定义的类架构函数,在类实例化的时候所调用的,是魔术方法之一,具体请看PHP文档。因此官方不建议在控制器架构的时候使用__construct来完成初始化,因为think\controller在执行架构的同时还进行请求注入和视图注入以及前置方法调用,在控制器中使用__construct会覆盖父类的也就是think\controlle中的__construct造成某些控制器特性无法使用,因此要如果要使用__construct的话必须在自定义基类控制器中调用parent::__construct,确保父类架构执行,话虽如此但仍然会破坏架构执行顺序,最后还是建议使用initialize进行架构,如果要在控制器中使用initialize()+__construct,在__construct中添加self::initialize()。

补充模型初始化
模型中的架构顺序是__construc->initialize()->init(),5.1的文档已经不建议使用initialize()来初始化,如果要用的话同理要在initialize()中添加parent::initialize()来调用父类方法,最后要注意init()是静态方法!!!静态!!!这个坑踩过
收藏
漠北银狐
积分:740 等级:LV2
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /