这篇文章主要介绍了ThinkPHP中类的构造函数_construct()与_initialize()的区别,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。

前言

相信熟悉THINKPHP的phper基本上都很熟悉_initialize()这个方法,我们似乎也很少去使用_construct(),除非自己写插件,否则还真是很少用到。

今天查看代码突然看到_construct()这个php自带的构造方法,我的第一感觉是比较陌生,虽然之前学习java时经常遇到,但是很久不用基本忘记。我平时的习惯是将知识的重点写

在我那本小笔记上,但是很久不写字,曾经高中那个那种飘逸灵动的书写笔法彻底丢到异次元。再加上之前的想法,所以就来学习学习技术大牛们写写博客,这不是为了装逼,而只是让自己工作成果的点点滴滴都能不随时间流逝而消散。下面来看看详细的介绍吧。

先贴上代码(我的环境是wamp,使用了TP框架):

创建的FatherAction.class.php文件<?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(){

}

}

?>

运行子类SonAction里的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(){

}

}

?>

当执行子类SonAction的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构造函数(这个本人亲测,上述代码没有)。

总结

php tp写构造函数,详细介绍ThinkPHP中类的构造函数_construct()与_initialize()的区别相关推荐

  1. 详细介绍VO(值对象)和PO(持久对象)的区别

    VO,值对象(Value Object),PO,持久对象(Persisent Object),它们是由一组属性和属性的get和set方法组成.从结构上看,它们并没有什么不同的地方.但从其意义和本质上来 ...

  2. initialize php,关于_initialize()的详细介绍

    这篇文章主要介绍了ThinkPHP中类的构造函数_construct()与_initialize()的区别,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧.前言相信熟悉 ...

  3. c语言%.6s和%6s的差别,6s和6的区别有哪些 各方面详细介绍【图文】

    苹果 手机大家都听说过吧,它现在是很多年轻人追捧的对象,尤其是对于女性朋友来说,苹果手机是美国的一个手机品牌.在大陆市场非常受欢迎,它的价格虽然高,但是它的销量非常高,目前最为流行的款式就是苹果6S了 ...

  4. ThinkPHP使用分组详细介绍(十七)

    原文:ThinkPHP使用分组详细介绍(十七) 使用分组(模块分组) *就是将多个项目合并到一个项目/应用去(就是Home.Admin) ---分组不分组看自己的建立项目习惯,个人习惯用根目录配置生成 ...

  5. 【2022年华为杯数学建模E题赛后总结加思路详细介绍配代码----10月11号写的总结】

    提示:下文将介绍2022年华为杯数学建模E题赛后总结加思路详细介绍配代码 傻逼队友,傻逼队友,傻逼队友一定要看好人在进行组队,这是劝告. 这里有几点总结进行描述: 第一,图一定要尽量多,对图的解释要多 ...

  6. JAVA中JVM的重排序详细介绍(写得很明白)

    刚刚在研究volatile变量的时候,涉及到重排序的概念,于是发现了这篇很好的文章,写得很简短很明白.所以转载一下. 原文地址:JAVA中JVM的重排序详细介绍 原文贴出来: 重排序通常是编译器或运行 ...

  7. xilinx Vivado的使用详细介绍(2):创建工程、添加文件、综合、实现、管脚约束、产生比特流文件、烧写程序、硬件验证

    xilinx Vivado的使用详细介绍(2):创建工程.添加文件.综合.实现.管脚约束.产生比特流文件.烧写程序.硬件验证 Author:zhangxianhe 新建工程 打开Vivado软件,直接 ...

  8. 详细介绍如何从0开始写一个数据通信,将数据从单片机发送到上位机(或者虚拟示波器)进行数据或图像显示,以及常见问题或注意事项解答,本文主要以匿名上位机为例,适合新手和小白

      本文主要内容:详细介绍如何从0开始写一个数据通信,将数据从单片机发送到上位机(或者虚拟示波器)进行数据或图像显示,帮助我们调节一些参数,比如电机PID的调节.波形融合等,以及在我们写通信协议的时候 ...

  9. python中类的详细介绍及使用

    python中类的详细介绍及使用 前面我们介绍了类的创建及面向对象的三大特性.本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 一.类的成员 类的成员包括:属性和方法. 属性可以分为: ...

最新文章

  1. Py之openpyxl:openpyxl库的简介、安装、使用方法之详细攻略
  2. Jenkins拾遗--第三篇(用户权限管理)
  3. UITabBarController 和 UINavigationController 的详解
  4. 简单高效地控制高亮度LED
  5. Windows核心编程MFC_gdi+发光字
  6. bzoj2146 Construct
  7. fullgc多久一次正常_多久排便一次算正常?提醒:出现3种情况,可能是胃肠“生病”了...
  8. 笨猪猪:“暹粒游记”(上)
  9. 扫雷游戏网页版_佛性扫雷 炸不炸随缘
  10. 通过云主机实现双十一淘宝,京东秒杀 之一
  11. 陈述句c语言,幼儿语言发展中最早产生的句型是()。A.陈述句 B.疑问句C.祈使句 D.感叹句...
  12. cmsplus实战之仿[我扫网]之四:安装整站下载器并下载仿站所有数据
  13. php模拟IP请求,如何在php中利用curl对ip进行模拟
  14. 运动耳机品牌排行榜有哪些,排行前五的运动耳机推荐
  15. Unity各类数据库的基本操作(三)-- JSON
  16. Unity 颜色板|调色板|无级变色功能
  17. ThingsBoard教程(十九):规则节点概览介绍
  18. 关于查看虚拟机防火墙 状态和关闭防火墙(CentOS7)
  19. vr性能测试软件,SteamVR性能测试工具
  20. 内部干货 | 阿里CEO逍遥子:学会“用人做事”,而不是“做事用人”...

热门文章

  1. 在IT行业对专业知识的掌握能力
  2. 虽然在修行初期的飞鸽传书
  3. mpvue微信小程序动画_mpvue小程序以及微信直播踩坑总结
  4. SQL | 目录(持续更新)
  5. pip 安装网络超时解决方案
  6. 哈佛大学单细胞课程|笔记汇总 (八)
  7. php解析验证码,全面解析PHP验证码的实现原理 附php验证码小案例
  8. 如何把笔记本变成显示器_笔记本电脑如何连接使用今声优盒
  9. 如何初始化局部变量c语言_重要的事情说三遍:局部变量一定要初始化!你做到了吗?...
  10. 中国电子学会scratch等级考试二级