
ThinkPHP中initialize()和construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?
在网上搜索,很多答案是两者是一样的,ThinkPHP中initialize相当于php的construct,这么说是错误的,如果这样,tp为什么不用construct,而要自己弄一个ThinkPHP版的initialize构造函数呢?
相关学习推荐:thinkphp
自己试一下就知道两者的不同了。
a.phpclass a{ function __construct(){ echo 'a'; }}
b.php(注意:这里构造函数没有调用parent::__construct();)
立即学习“PHP免费学习笔记(深入)”;
include 'a.php';class b extends a{ function __construct(){ echo 'b'; }} $test=new b();
运行结果:
b
可见,虽然b类继承了a类,但是输出结果证明程序只是执行了b类的构造函数,而没有自动执行父类的构造函数。
如果b.php的构造函数加上parent::__construct(),就不同了。
include 'a.php';class b extends a{ function __construct(){ parent::__construct(); echo 'b'; }} $test=new b();
那么输出结果是:
PHP轻论坛
简介PHP轻论坛是一个简单易用的PHP论坛程序,适合小型社区和个人网站使用。v3.0版本是完全重构的版本,解决了之前版本中的所有已知问题,特别是MySQL保留字冲突问题。主要特点• 简单易用:简洁的界面,易于安装和使用• 响应式设计:适配各种设备,包括手机和平板• 安全可靠:避免使用MySQL保留字,防止SQL注入• 功能完善:支持分类、主题、回复、用户管理等基本功能• 易于扩展:模块化设计,便于
21 查看详情
ab
此时才执行了父类的构造函数。
我们再来看看thinkphp的initialize()函数。
BaseAction.class.phpclass BaseAction extends Action{ public function _initialize(){ echo 'baseAction'; } IndexAction.class.phpclass IndexAction extends BaseAction{ public function (){ echo 'indexAction'; }
运行Index下的index方法,输出结果:
baseActionindexAcition
可见,子类的_initialize方法自动调用父类的_initialize方法。而php的构造函数construct,如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();
这就是ThinkPHP中initialize和construct的不同。
相关推荐:编程视频课程
以上就是了解ThinkPHP中initialize和construct的区别的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/858530.html
微信扫一扫
支付宝扫一扫