浅谈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 高手之路(一)
Oct 09 PHP
推荐个功能齐全的发送PHP邮件类
Jan 03 PHP
php+mysql开源XNA 聚合程序发布 下载
Jul 13 PHP
php去除HTML标签实例
Nov 06 PHP
你可能不知道PHP get_meta_tags()函数
May 12 PHP
php检测url是否存在的方法
Apr 14 PHP
微信公众平台开发实现2048游戏的方法
Apr 15 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
Jun 03 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
Nov 05 PHP
PHP实现的函数重载功能示例
Aug 03 PHP
PHP getNamespaces()函数讲解
Feb 03 PHP
PHP接入支付宝接口失效流程详解
Nov 10 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 gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
Smarty日期时间操作方法示例
2016/11/15 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
2017/08/25 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
python逐行读取文件内容的三种方法
2014/01/20 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
python实现自动化上线脚本的示例
2019/07/01 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
python中upper是做什么用的
2020/07/20 Python
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
业务部经理岗位职责
2014/01/04 职场文书
2014年计算机专业个人自我评价
2014/01/19 职场文书
2014年创卫实施方案
2014/02/18 职场文书
手机被没收检讨书
2014/02/22 职场文书
门店业绩提升方案
2014/06/08 职场文书
四大名著读书笔记
2015/06/25 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
python的html标准库
2022/04/29 Python