ThinkPHP中_initialize()與__construct()用法
1 _initialize()不是php類中的建構函式,php類的建構函式只有__construct().
2 類的初始化:子類如果有自己的建構函式__construct(),則呼叫自己的進行初始化,如果沒有,
則呼叫父類的建構函式進行自己的初始化
3 當子類和父類都有__construct()函式的時候,如果要在初始化子類的時候同時呼叫父類的__constrcut(),
則可以在子類中使用parent::__construct().
如果我們寫兩個類,如下
程式碼如下 | 複製程式碼 |
class Action {
class IndexAcion extends Action {
$test = new IndexAcion(); |
很明顯初始化子類IndexAction的時候會呼叫自己的建構函式,所以輸出是'hello IndexAction'
但是將子類修改為
程式碼如下 | 複製程式碼 |
class IndexAcion extends Action { public function _initialize(){ echo 'hello IndexAction'; } } |
那麼輸出的是'hello Action',因為子類IndexAction沒有自己的建構函式
如果我想在初始化子類的時候,同時呼叫父類的構造器呢?
程式碼如下 | 複製程式碼 |
class IndexAcion extends Action {
class Action {
class IndexAcion extends Action { |
這樣也可以將兩句話同時輸出
而這裡子類中的方法hello()就類似於ThinkPHP中_initialize()
所以,ThinkPHP中的_initialize()的出現只是方便程式設計師在寫子類的時候避免頻繁的使用parent::__construct()
同時正確的呼叫框架內父類的建構函式,所以,我們在ThnikPHP中初始化子類的時候要用_initialize(),而不用__construct(),
當然你也可以通過修改框架將_initialize()函式修改為你喜歡的函式
原文章地址:http://www.111cn.net/phper/thinkPhp/60041.htm