<?php

class FatherAction extends Action{
  public function __construct(){
    echo 'father';
  }
}

?>

创建的SonAction.class.php文件

<?php

class SonAction extends FatherAction{
  public function __construct(){
    echo 'son';
  }
function index(){

}
}

?>

输出“son”

如果将子类改为:

<?php

class SonAction extends FatherAction{
   public function __construct(){
    parent::__construct();
    echo 'son';
   }
  function index(){

  }
}

?>

输出“fatherson”.

上面的结果可以得出结论:

在执行子类的构造函数时并不会自动调用父类的构造函数,如果你要调用的话,那么要加上parent::__construct()

当我们把上述的构造方法改为THINKPHP_initialize()方法时运行会发现:结果与前面的一致,若要执行父类的_initialize()方法,也需要使用这一句:

parent::_initialize()那是不是说明php自带的构造函数__construct()与THINKPHP的_initialize()方法一样的呢?

先贴上两段代码:

<?php

class FatherAction extends Action{
  public function __construct(){
    echo 'father';
  }
}

?>

<?php

class SonAction extends FatherAction{
  public function _initialize(){
    echo 'son';
  }

  function index(){

  }

}

?>输出的结果为:father.即子类调用了父类的构造函数,而没有调用子类的_initialize()方法

再贴上两段代码:

<?php

class FatherAction extends Action{
  public function __construct(){
    if(method_exists($this,"hello")){
      $this->hello();
    }
    echo 'father';
  }
}

?>

<?php

class SonAction extends FatherAction{
  public function _initialize(){
    echo 'son';
  }
  function index(){

  }

  function hello(){
    echo 'hello';
  }
}

?>执行子类SonAction的index方法,发现输入的结果为hellofather

由此可以得出结论:

  当THINKPHP的父类有构造函数而子类没有时,THINKPHP不会去执行子类的_initialize();

  当THINKPHP的父类子类均有构造函数时,要调用父类的构造函数必须使用parent::__construct()-----------------_initialize()同理;

  当THINKPHP的子类同时存在__construct构造函数和_initialize()方法,只会执行子类的__construct构造函数(这个上述代码没有,可以自己测试)。

转载于:https://www.cnblogs.com/xwzq/p/7523130.html

tp框架中构造函数__construct()与初始化函数_initialize()的区别相关推荐

  1. TP框架中内置查询IP函数

    系统内置了get_client_ip方法用于获取客户端的IP地址,使用示例: $ip = get_client_ip(); 如果要支持IP定位功能,需要使用扩展类库Org\Net\IpLocation ...

  2. TP框架中S函数使用方法

    TP框架中S函数使用步骤: //初始化 type为缓存方式;prefix为缓存前缀标示,也就是名字;expire为生存周期  //我这里设置缓存方式为xcache,名字ticket,周期7100秒 c ...

  3. TP框架中field查询字段

    TP框架中field查询字段 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是file ...

  4. TP框架中ajax post请求时提示404

    ajax post请求时提示404错误 TP框架中ajax post请求时提示404 找了半天是 控制器中方法有错误! 下次再遇到去控制器方法中找一步一步找,肯定能找到,我是单词拼错了! 转载于:ht ...

  5. tp框架中的一些疑点知识-5

    关于vim中的缓存区的前后bp和bn的界定 通过命令ls可以看到 缓存区的 排序. 最开始打开的文件排在最上面, 序号最小. 那么它们就是 更 前 的缓冲区. 序号更前的用bp, 序号靠后的用bn. ...

  6. tp框架中引入php文件,Laravel框架及ThinkPHP框架超级简单的公共文件引入(保留变量)...

    为什么要把两个框架放在一起来说呢?额...因为TP5.1.x与Laravel实在是太像了,本文主要讲述关于大家顶部及底部文件引入的问题. 但是如果顶部和尾部只是单纯的html代码还好说,但是里面通常有 ...

  7. 11月25日:tp框架中的架构,配置,路由,控制器

    tp框架的主要内容 架构: https://static.kancloud.cn/manual/thinkphp5/118010 配置: 配置文件主要位置 可以使用Config::load()调用th ...

  8. SQLServer 2000中,存储过程和用户自定义函数具体的区别??

    2019独角兽企业重金招聘Python工程师标准>>> 存储过程 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语 ...

  9. Pytest测试框架中,setup和teardown函数的作用及使用方法

    作为一名Python开发人员,您一定知道Pytest是一个广泛使用的Python测试框架. 它具有易用性和灵活性,可以帮助您快速编写测试用例,并且能够支持包括单元测试.集成测试.功能测试等多种测试类型 ...

  10. TP框架中同时使用“or”和“and”

    今天在tp中遇到一个问题,可能这并不算难的问题,但是我还是分享一下 以下是tp手册里面查询or的方式 $User = M("User"); // 实例化User对象 $where[ ...

最新文章

  1. 金融风控实战——Hive详解(数据读取、预处理、特征工程)
  2. (18)修改 PTE 实现挂物理页读写空指针
  3. 9、创建索引(CREATE INDEX)
  4. 【CF1311E】Construct the Binary Tree【增量构造】【复杂度证明】
  5. 死信队列和延迟队列_在实践中使用延迟队列
  6. vue基础4——自定义指令
  7. [转载] Python连接MySQL、Mongodb、SQLite
  8. 滤波电路对服务器的影响,滤波电路到底有什么作用?
  9. 个图标当十个用—多功能系统级图标制作攻略
  10. maven - 初识
  11. ghs文件可以删除吗_电脑C盘快满了,哪些文件可以直接删除掉?带你了解一下...
  12. Acer 4750 安装黑苹果_超详细安装黑苹果教程
  13. 【混合编程】c++中调用python脚本
  14. 1分钟激活任意Windows 系统
  15. 未来网络什么样?新华三是这么说的
  16. 热评云厂商:青云科技4.29亿元,重研发押注更大发展
  17. 计算机进安全模式启动修复,win7电脑故障怎么进入安全模式修复
  18. 转帖:励建书:数学有助于大众理性思维的培养
  19. JAVA 的性能优化
  20. vscode环境配置:附注有参考链接,便于下载软件。

热门文章

  1. 7-1 打印倒直角三角形图形 (20 分)
  2. 三角形形态-非常重要的整理形态
  3. 免费可商用图片网站整理
  4. 2018-08-14云兴维智电话面试总结
  5. word尾注编辑参考文献
  6. Unity3D--学习太空射击游戏制作(四)
  7. 深度学习的应用与实践
  8. 安装xdg-open
  9. 没想到 Python 中竟然还藏着这些稀奇古怪的东西...
  10. 爬虫实战 ——百度翻译