ThinkPHP5.0.11中的 _initialize() 和 PHP的__construct()的差异

比较ThinkPHP5.0.11中的 _initialize() 和 PHP的__construct()的差异

<?php
/**
 *  小结:
 *  1、触发时机
 *  __construct(): 调用到类/实例化类时才会触发
 *  _initialize():  调用了类中的任一方法才会被触发
 *
 *  2、各种情况:
 *  1) 当父类既有 __constrcut() 又有 _initialize() 在同一级父类中,则子类__construct()有效 , _initialize() 失效,
 *  2) 当父类有无 __construct(), 有_initialize() , 则子类构造和初始化方法均有效 [适用]
 *  3) 当父类 有__construct() , 无 _initialize(), 则子类构造有效
 */
//命名空间
namespace app\member\controller;

//调用thinkphp框架的基类
use think\Controller;

//父类继承自thinkphp框架的基类
class Father extends Controller
{
    //构造方法
    public  function __construct()
    {
        echo '這是爸爸的构造方法<br />';
    }

    //初始化方法
    public function _initialize()
    {
        echo '這是爸爸的init方法<br />';
    }

    //测试方法
    public function index()
    {
        echo 11111111;
    }
}
//实例化父类,并调用测试方法
//$father = new Father();
//$father->index();

//-----------------------------------------------------------------------------------------------------------
<?php
/**
 *  子类
 */

namespace app\member\controller;

//子类继承自父类
class Son extends Father
{
    public function __construct() {
        parent::__construct();
        echo '这是son的构造方法<br />';
    }

    public function _initialize()
    {
        parent::_initialize();
        echo '这是son的init方法<br />';
    }

    public function index()
    {
        echo '22222222';
    }
}
//$son = new Son();
//$son->index();
测试时在url地址栏中输入,test.com可替换成自己配置的虚拟主机域名
    格式: 
        http://域名/模块名/控制器名/方法名
    示例:
    http://test.com/member/father/index
    http://test.com/member/son/index
 小结:
    1、触发时机
       __construct(): 调用到类/实例化类时出发
       _initialize():  调用了类中的方法才会被触发

    2、各种情况:
           1) 当父类既有 __constrcut() 又有 _initialize() 在同一级父类中,则子类__construct()有效 , _initialize() 失效,
           2) 当父类有无 __construct(), 有_initialize() , 则子类构造和初始化方法均有效 [适用]
           3) 当父类 有__construct() , 无 _initialize(), 则子类构造有效
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值