ThinkPHP中__initialize()和类的构造函数__construct()用法分析

作者:shichen2014 时间:2023-07-08 01:26:24 

本文实例分析了ThinkPHP中的__initialize()和类的构造函数__construct()。分享给大家供大家参考。具体分析如下:

thinkphp中的__construct是不可以随便用的,因为你的模块类继承上级类,上级类有定义好的;

1、__initialize()不是php类中的函数,php类的构造函数只有__construct().

2、类的初始化:子类如果有自己的构造函数(__construct()),则调用自己的进行初始化,如果没有,则调用父类的构造函数进行自己的初始化。

3、当子类和父类都有__construct()函数的时候,如果要在初始化子类的时候同时调用父类的__constrcut(),则可以在子类中使用parent::__construct().

如果我们写两个类,如下:

class Action{ 
    public function __construct() 
    { 
        echo 'hello Action'; 
    } 

class IndexAction extends Action{ 
    public function __construct() 
    { 
        echo 'hello IndexAction'; 
    } 

$test = new IndexAction; 
//output --- hello IndexAction


很明显初始化子类IndexAction的时候会调用自己的构造器,所以输出是'hello IndexAction',但是将子类修改为:

class IndexAction extends Action{ 
    public function __initialize() 
    { 
        echo 'hello IndexAction'; 
    } 
}


那么输出的是'hello Action',因为子类IndexAction没有自己的构造器,如果我想在初始化子类的时候,同时调用父类的构造器呢?

class IndexAction extends Action{ 
    public function __construct() 
    { 
        parent::__construct(); 
        echo 'hello IndexAction'; 
    } 
}


这样就可以将两句话同时输出,当然还有一种办法就是在父类中调用子类的方法.

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

class IndexAction extends Action{ 
    public function hello() 
    { 
        echo 'hello IndexAction'; 
    } 
}


这样也可以将两句话同时输出,而这里子类中的方法hello()就类似于ThinkPHP中__initialize()。

所以,ThinkPHP中的__initialize()的出现只是方便程序员在写子类的时候避免频繁的使用parent::__construct(),同时正确的调用框架内父类的构造器,所以,我们在ThnikPHP中初始化子类的时候要用__initialize(),而不用__construct(),当然你也可以通过修改框架将__initialize()函数修改为你喜欢的函数名.

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

标签:ThinkPHP,函数,用法
0
投稿

猜你喜欢

  • Python操作Excel的学习笔记

    2022-04-02 16:43:29
  • pyqt5 QProgressBar清空进度条的实例

    2022-11-28 03:04:08
  • vue中watch监听器用法之deep、immediate、flush

    2024-04-27 16:13:35
  • 如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单

    2022-08-02 13:14:35
  • Script 元素 type 属性的妙用

    2011-03-07 16:13:00
  • Python读写锁实现实现代码解析

    2023-06-16 23:27:12
  • Python词法结构

    2022-01-10 00:33:21
  • 详解Python中with语句的用法

    2022-07-31 05:24:52
  • python求列表交集的方法汇总

    2023-03-01 10:32:40
  • Django auth 应用模块详解

    2023-05-20 11:17:17
  • vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)

    2024-05-09 15:21:01
  • Python实现弹球小游戏的示例代码

    2022-12-15 18:09:07
  • python 中赋值,深拷贝,浅拷贝的区别

    2022-11-15 09:35:44
  • 配置python连接oracle读取excel数据写入数据库的操作流程

    2024-01-14 02:30:31
  • PHP实用函数分享之去除多余的0

    2023-11-15 02:07:59
  • JS中实现JAVA的hashCode算法

    2008-08-03 17:00:00
  • 通过事务日志解决SQL Server常见四大故障(二)

    2009-03-25 13:51:00
  • Python分析最近大火的网剧《隐秘的角落》

    2023-07-17 07:09:04
  • 一文搞懂Golang文件操作增删改查功能(基础篇)

    2024-04-28 09:13:43
  • Django框架表单操作实例分析

    2022-01-27 23:43:59
  • asp之家 网络编程 m.aspxhome.com