ThinkPHP中_initialize(卡塔尔与__construct(卡塔尔(قطر‎用法

2020-02-15 08:35栏目:bob体育平台
TAG:

本文实例讲述了thinkPHP中_initialize方法。分享给大家供大家参考,具体如下:

ThinkPHP中的__initialize()和类的构造函数__construct()
网上有很多关于__initialize()的说法和用法,总感觉不对头,所以自己测试了一下。将结果和大家分享。不对请更正。
首先,我要说的是
1、__initialize()不是php类中的函数,php类的构造函数只有__construct().
2、类的初始化:子类如果有自己的构造函数(__construct()),则调用自己的进行初始化,如果没有,则调用父类的构造函数进行自己的初始化。
3、当子类和父类都有__construct()函数的时候,如果要在初始化子类的时候同时调用父类的__constrcut(),则可以在子类中使用parent::__construct().

例子:

子类的_initialize方法自动调用父类的_initialize方法。而php的构造函数construct,如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct();

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

protected $archives;//声明全局属性
    protected $person;
    function _initialize(){//初始化类
        parent::_initialize();//调用父类
        set_time_limit(0);//持续运行到程序结束
        $this->archives = M('archives');//创建对象
        $this->person = M('person');
    }
子类如果没有_initialize方法,则默认调用父类的_initialize方法。输出:Base class如果有,则执行自己的_initialize方法。输出:hello I am child如果同时执行,则要这样写输出:Base class hello I am child更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI框架进阶教程》、《Zend FrameWork框架入门教程》、《smarty模板入门基础教程》及《PHP模板技术总结》。希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
class Action{  
    public function __construct()  
    {  
        echo 'hello Action';  
    }  
}  
class IndexAction extends Action{  
    public function __construct()  
    {  
        echo 'hello IndexAction';  
    }  
}  
$test = new IndexAction;  
//output --- hello IndexAction  

1 _initialize()不是php类中的构造函数,php类的构造函数只有__construct().
2 类的初始化:子类如果有自己的构造函数__construct(),则调用自己的进行初始化,如果没有,
则调用父类的构造函数进行自己的初始化
3 当子类和父类都有__construct()函数的时候,如果要在初始化子类的时候同时调用父类的__constrcut(),
则可以在子类中使用parent::__construct().
如果我们写两个类,如下

 

class Action {
   public function __construct(){
       echo 'hello Action';
   }
}   
class IndexAcion extends Action {
   public function __construct(){
       echo 'hello,IndexAction';
   }
}
$test = new IndexAcion();
output --- hello IndexAction

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

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

 

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

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

版权声明:本文由bob体育app发布于bob体育平台,转载请注明出处:ThinkPHP中_initialize(卡塔尔与__construct(卡塔尔(قطر‎用法