浅谈ThinkPHP中initialize和construct的区别


Posted in PHP onApril 01, 2017

ThinkPHP中initialize()和construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢?

在网上搜索,很多答案是两者是一样的,ThinkPHP中initialize相当于php的construct,这么说是错误的,如果这样,tp为什么不用construct,而要自己弄一个ThinkPHP版的initialize构造函数呢?

自己试一下就知道两者的不同了。

a.php

class a{

  function __construct(){

    echo 'a';

  }

}

b.php(注意:这里构造函数没有调用parent::__construct();)

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();

那么输出结果是:

ab

此时才执行了父类的构造函数。

我们再来看看thinkphp的initialize()函数。

BaseAction.class.php

class BaseAction extends Action{

  public function _initialize(){

       echo 'baseAction';

  }

 
 

IndexAction.class.php

class IndexAction extends BaseAction{

  public function (){

       echo 'indexAction';

    }

运行Index下的index方法,输出结果:

baseActionindexAcition

可见,子类的_initialize方法自动调用父类的_initialize方法。而php的构造函数construct,如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();

这就是ThinkPHP中initialize和construct的不同。

以上这篇浅谈ThinkPHP中initialize和construct的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP操作MongoDB时的整数问题及对策说明
May 02 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
Jun 29 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
php实现分页工具类分享
Jan 09 PHP
微信公众平台开发关注及取消关注事件的方法
Dec 23 PHP
PHP中返回引用类型的方法
Apr 03 PHP
php实现用手机关闭计算机(电脑)的方法
Apr 22 PHP
PHP实现的构造sql语句类实例
Feb 03 PHP
由php中字符offset特征造成的绕过漏洞详解
Jul 07 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
Mar 11 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
Oct 17 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 #PHP
PHP中file_put_contents追加和换行的实现方法
Apr 01 #PHP
centos下file_put_contents()无法写入文件的原因及解决方法
Apr 01 #PHP
php file_get_contents取文件中数组元素的方法
Apr 01 #PHP
PHP中Laravel 关联查询返回错误id的解决方法
Apr 01 #PHP
php获取ip及网址的简单方法(必看)
Apr 01 #PHP
Thinkphp事务操作实例(推荐)
Apr 01 #PHP
You might like
php中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
2013/12/25 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
js实现适合新闻类图片的轮播效果
2017/02/05 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
Angular2库初探
2017/03/01 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
Python常用模块介绍
2014/11/21 Python
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
简单学习Python time模块
2016/04/29 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
护理专业本科生自荐信
2013/10/01 职场文书
机电一体化大学生求职信
2013/11/08 职场文书
房屋委托书范本
2014/04/04 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书