浅谈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面向对象全攻略 (十) final static const关键字的使用
Sep 30 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
Apr 28 PHP
php中将网址转换为超链接的函数
Sep 02 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
Jul 19 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
PHP图像裁剪缩略裁切类源码及使用方法
Jan 07 PHP
什么是OneThink oneThink后台添加插件步骤
Apr 13 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
Feb 16 PHP
PHP中trait使用方法详细介绍
May 21 PHP
Laravel框架在本地虚拟机快速安装的方法详解
Jun 11 PHP
PHP实现非阻塞模式的方法分析
Jul 26 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强制类型转换,慎用!
2013/06/06 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
玩转方法:call和apply
2014/05/08 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
js实现背景图自适应窗口大小
2017/01/10 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中replace方法实例分析
2014/08/20 Python
决策树的python实现方法
2014/11/18 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
用Python配平化学方程式的方法
2019/07/20 Python
HTML的form表单和django的form表单
2019/07/25 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
实习教师自我鉴定
2013/09/27 职场文书
领导证婚人证婚词
2014/01/13 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript
JavaScript设计模式之原型模式详情
2022/06/21 Javascript