PHP头条
热点:

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(), 则子类构造有效

www.phpzy.comtrue/php/5775.htmlTechArticleThinkPHP5.0.11中的 _initialize() 和 PHP的__construct()的差异, 比较ThinkPHP5.0.11中的 _initialize() 和 PHP的__construct()的差异 ?php /** * 小结: * 1、触发时机 * __construct(): 调用到类/实例化类时才会触发...

相关文章

相关频道:

PHP之友评论

今天推荐