浅谈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 相关文章推荐
火车头采集器3.0采集图文教程
Mar 17 PHP
实用函数9
Nov 08 PHP
php 分页函数multi() discuz
Jun 21 PHP
php中判断文件空目录是否有读写权限的函数代码
Aug 07 PHP
php网站地图生成类示例
Jan 13 PHP
两种设置php载入页面时编码的方法
Jul 29 PHP
访问编码后的中文URL返回404错误的解决方法
Aug 20 PHP
php截取中文字符串函数实例
Feb 23 PHP
用PHP代码在网页上生成图片
Jul 01 PHP
php的常量和变量实例详解
Jun 27 PHP
php中青蛙跳台阶的问题解决方法
Oct 14 PHP
PHP合并两个或多个数组的方法
Jan 20 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
使用数据库保存session的方法
2006/10/09 PHP
PHP 数组遍历方法大全(foreach,list,each)
2010/06/30 PHP
用js做一个小游戏平台 (一)
2009/12/29 Javascript
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
js导出table数据到excel即导出为EXCEL文档的方法
2013/10/10 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
js实现黑白div块画空心的图形
2018/12/13 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
Python常用的日期时间处理方法示例
2015/02/08 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
详解Django的CSRF认证实现
2018/10/09 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
python标准库OS模块详解
2020/03/10 Python
pandas分组聚合详解
2020/04/10 Python
python百行代码自制电脑端网速悬浮窗的实现
2020/05/12 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
速比涛英国官网:Speedo英国
2019/07/15 全球购物
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
2014年调度员工作总结
2014/11/19 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript