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