浅谈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 相关文章推荐
支持oicq头像的留言簿(二)
Oct 09 PHP
抓取YAHOO股票报价的类
May 15 PHP
ajax+php打造进度条 readyState各状态
Mar 20 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
Jan 19 PHP
基于Linux调试工具strace与gdb的常用命令总结
Jun 03 PHP
Session服务器配置指南与使用经验的深入解析
Jun 17 PHP
php文件夹与文件目录操作函数介绍
Sep 09 PHP
PHP三元运算的2种写法代码实例
May 12 PHP
Codeigniter(CI)框架分页函数及相关知识
Nov 03 PHP
php实现发送微信模板消息的方法
Mar 07 PHP
php实现和c#一致的DES加密解密实例
Jul 24 PHP
详细解读php的命名空间(二)
Feb 21 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
老版本PHP转义Json里的特殊字符的函数
2015/06/08 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
深入理解vue-class-component源码阅读
2019/02/18 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
JS实现导航栏楼层特效
2020/01/01 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
使用python装饰器验证配置文件示例
2014/02/24 Python
Python实现简单的语音识别系统
2017/12/13 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
softmax及python实现过程解析
2019/09/30 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
俄罗斯游戏商店:Buka
2020/03/01 全球购物
顶岗实习计划书
2014/01/10 职场文书
学年自我鉴定
2014/01/16 职场文书
餐饮收银员岗位职责
2014/02/07 职场文书
中班中秋节活动反思
2014/02/18 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
自我推荐信格式模板
2015/03/24 职场文书