《PHP編程:淺談ThinkPHP中initialize和construct的區別》要點:
本文介紹了PHP編程:淺談ThinkPHP中initialize和construct的區別,希望對您有用。如果有疑問,可以聯系我們。
相關主題:thinkphp教程
PHP編程ThinkPHP中initialize()和construct()這兩個函數都可以理解為構造函數,前面一個是tp框架獨有的,后面的是php構造函數,那么這兩個有什么不同呢?
PHP編程在網上搜索,很多答案是兩者是一樣的,ThinkPHP中initialize相當于php的construct,這么說是錯誤的,如果這樣,tp為什么不用construct,而要自己弄一個ThinkPHP版的initialize構造函數呢?
PHP編程自己試一下就知道兩者的不同了.
PHP編程
a.php
class a{
function __construct(){
echo 'a';
}
}
PHP編程b.php(注意:這里構造函數沒有調用parent::__construct();)
PHP編程
include 'a.php';
class b extends a{
function __construct(){
echo 'b';
}
}
$test=new b();
PHP編程運行結果:
PHP編程b
PHP編程可見,雖然b類繼承了a類,但是輸出結果證明程序只是執行了b類的構造函數,而沒有自動執行父類的構造函數.
PHP編程如果b.php的構造函數加上parent::__construct(),就不同了.
PHP編程
include 'a.php';
class b extends a{
function __construct(){
parent::__construct();
echo 'b';
}
}
$test=new b();
PHP編程那么輸出結果是:
PHP編程ab
PHP編程此時才執行了父類的構造函數.
PHP編程我們再來看看thinkphp的initialize()函數.
PHP編程
BaseAction.class.php
class BaseAction extends Action{
public function _initialize(){
echo 'baseAction';
}
IndexAction.class.php
class IndexAction extends BaseAction{
public function (){
echo 'indexAction';
}
PHP編程運行Index下的index方法,輸出結果:
PHP編程baseActionindexAcition
PHP編程可見,子類的_initialize方法自動調用父類的_initialize方法.而php的構造函數construct,如果要調用父類的方法,必須在子類構造函數顯示調用parent::__construct();
PHP編程這就是ThinkPHP中initialize和construct的不同.
PHP編程以上這篇淺談ThinkPHP中initialize和construct的區別就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持維易PHP.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/1286.html