搜尋
首頁php框架ThinkPHP分析ThinkPHP中__initialize()和類別的建構子__construct()用法

分析ThinkPHP中__initialize()和類別的建構子__construct()用法

本文實例分析了ThinkPHP中的__initialize()和類別的建構子__construct()。分享給大家供大家參考。具體分析如下:

thinkphp中的__construct是不可以隨便用的,因為你的模組類別繼承上級類別,上級類別有定義好的;

相關學習推薦:thinkphp

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中__initialize()和類別的建構子__construct()用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:jb51。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。