建構函式
PHP5允行開發者在一個類中定義一個方法作為建構函式。具有建構函式的類會在每次建立物件時先呼叫此方法,所以非常適合在使用物件之前做一些初始化工作。
注意:
如果子類中定義了建構函式則不會暗中呼叫其父類的建構函式。要執行父類的建構函式,需要在子類的建構函式中呼叫parent::__construct()。(??和其他語言明顯不同??)
例10.8.使用新標準的建構函式
classBaseClass{
function__construct(){
print"InBaseClassconstructorn";
}
}
classSubClassextendsBaseClass{
function__construct(){
parent::__construct();
print"InSubClassconstructorn";
}
}
$obj=newBaseClass();
$obj=newSubClass();
為了實現向後相容性,如果PHP5在類中找不到__construct()函式,它就會嘗試尋找舊式的建構函式,也就是和類同名的函式。因此唯一會產生相容性問題的情況是:類中已有一個名為__construct()的.方法,但它卻又不是建構函式。
解構函式
PHP5引入了解構函式的概念,這類似於其它面向物件的語言,如C++。解構函式會在到某個物件的所有引用都被刪除或者當物件被顯式銷燬時執行。
例10.9.解構函式示例
classMyDestructableClass{
function__construct(){
print"Inconstructorn";
$this->name="MyDestructableClass";
}
function__destruct(){
print"Destroying".$this->name."n";
}
}
$obj=newMyDestructableClass();
和建構函式一樣,父類的解構函式不會被引擎暗中呼叫。要執行父類的解構函式,必須在子類的解構函式體中顯式呼叫parent::__destruct()。(??和其他語言明顯不同??)
注意:
解構函式在指令碼關閉時呼叫,此時所有的頭資訊已經發出。
注意:
試圖在解構函式中丟擲一個異常會導致致命錯誤。