浅谈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 相关文章推荐
计数器详细设计
Oct 09 PHP
用PHP的ob_start();控制您的浏览器cache!
Feb 14 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
Nov 01 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
Jun 23 PHP
Yii框架关联查询with用法分析
Dec 02 PHP
memcache一致性hash的php实现方法
Mar 05 PHP
php查询whois信息的方法
Jun 08 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
Sep 30 PHP
详解PHP对数组的定义以及数组的创建方法
Nov 27 PHP
PHP中函数gzuncompress无法使用的解决方法
Mar 02 PHP
PHP用continue跳过本次循环中剩余代码的注意点
Jun 27 PHP
实例说明js脚本语言和php脚本语言的区别
Apr 04 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/01/18 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
详解vue.js之props传递参数
2017/12/12 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
Python中获取对象信息的方法
2015/04/27 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
python 除法保留两位小数点的方法
2018/07/16 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
python制作填词游戏步骤详解
2019/05/05 Python
在Django下测试与调试REST API的方法详解
2019/08/29 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
会计毕业生自我鉴定
2013/11/04 职场文书
数控专业应届生求职信
2013/11/27 职场文书
数学系毕业生的自我评价
2014/01/10 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
博士给导师的自荐信
2015/03/06 职场文书
立项申请报告范本
2015/05/15 职场文书
实习证明模板
2015/06/16 职场文书
正规欠条模板
2015/07/03 职场文书