浅谈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简单的会话类代码
Aug 08 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
May 03 PHP
php获取qq用户昵称和在线状态(实例分析)
Oct 27 PHP
ini_set的用法介绍
Jan 07 PHP
完善CodeIgniter在IDE中代码提示功能的方法
Jul 19 PHP
ThinkPHP 表单自动验证运用示例
Oct 13 PHP
使用PHP similar text计算两个字符串相似度
Nov 06 PHP
smarty中改进truncate使其支持中文的方法
May 30 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
Jun 13 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
PHP实现通过文本文件统计页面访问量功能示例
Feb 13 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
Feb 28 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+javascript模拟Matrix画面
2006/10/09 PHP
PHP无限分类的类
2007/01/02 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
PHP文件操作实例总结
2016/09/27 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
使用JavaScript获取电池状态的方法
2014/05/03 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
微信小程序中weui用法解析
2019/10/21 Javascript
nodejs实现百度舆情接口应用示例
2020/02/07 NodeJs
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
儿童编程python入门
2018/05/08 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
租车协议书范本
2014/04/22 职场文书
协议书格式
2014/04/23 职场文书
财政局长个人总结
2015/03/04 职场文书
退伍军人感言
2015/08/01 职场文书
法院执行局工作总结
2015/08/11 职场文书
2016年社区创先争优活动总结
2016/04/05 职场文书