php基礎(chǔ)知識(shí):類(lèi)與對(duì)象(3) 構(gòu)造函數(shù)和析構(gòu)函數(shù)
更新時(shí)間:2006年12月13日 00:00:00 作者:
構(gòu)造函數(shù)
PHP 5 允行開(kāi)發(fā)者在一個(gè)類(lèi)中定義一個(gè)方法作為構(gòu)造函數(shù)。具有構(gòu)造函數(shù)的類(lèi)會(huì)在每次創(chuàng)建對(duì)象時(shí)先調(diào)用此方法,所以非常適合在使用對(duì)象之前做一些初始化工作。
注意:
如果子類(lèi)中定義了構(gòu)造函數(shù)則不會(huì)暗中調(diào)用其父類(lèi)的構(gòu)造函數(shù)。要執(zhí)行父類(lèi)的構(gòu)造函數(shù),需要在子類(lèi)的構(gòu)造函數(shù)中調(diào)用 parent::__construct()。(??和其他語(yǔ)言明顯不同??)
例10.8.使用新標(biāo)準(zhǔn)的構(gòu)造函數(shù)
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();
為了實(shí)現(xiàn)向后兼容性,如果 PHP 5 在類(lèi)中找不到 __construct() 函數(shù),它就會(huì)嘗試尋找舊式的構(gòu)造函數(shù),也就是和類(lèi)同名的函數(shù)。因此唯一會(huì)產(chǎn)生兼容性問(wèn)題的情況是:類(lèi)中已有一個(gè)名為 __construct() 的方法,但它卻又不是構(gòu)造函數(shù)。
析構(gòu)函數(shù)
PHP 5 引入了析構(gòu)函數(shù)的概念,這類(lèi)似于其它面向?qū)ο蟮恼Z(yǔ)言,如 C++。析構(gòu)函數(shù)會(huì)在到某個(gè)對(duì)象的所有引用都被刪除或者當(dāng)對(duì)象被顯式銷(xiāo)毀時(shí)執(zhí)行。
例10.9.析構(gòu)函數(shù)示例
class MyDestructableClass {
function __construct() {
print "In constructor\n";
$this->name = "MyDestructableClass";
}
function __destruct() {
print "Destroying " . $this->name . "\n";
}
}
$obj = new MyDestructableClass();
和構(gòu)造函數(shù)一樣,父類(lèi)的析構(gòu)函數(shù)不會(huì)被引擎暗中調(diào)用。要執(zhí)行父類(lèi)的析構(gòu)函數(shù),必須在子類(lèi)的析構(gòu)函數(shù)體中顯式調(diào)用 parent::__destruct()。 (??和其他語(yǔ)言明顯不同??)
注意:
析構(gòu)函數(shù)在腳本關(guān)閉時(shí)調(diào)用,此時(shí)所有的頭信息已經(jīng)發(fā)出。
注意:
試圖在析構(gòu)函數(shù)中拋出一個(gè)異常會(huì)導(dǎo)致致命錯(cuò)誤。
PHP 5 允行開(kāi)發(fā)者在一個(gè)類(lèi)中定義一個(gè)方法作為構(gòu)造函數(shù)。具有構(gòu)造函數(shù)的類(lèi)會(huì)在每次創(chuàng)建對(duì)象時(shí)先調(diào)用此方法,所以非常適合在使用對(duì)象之前做一些初始化工作。
注意:
如果子類(lèi)中定義了構(gòu)造函數(shù)則不會(huì)暗中調(diào)用其父類(lèi)的構(gòu)造函數(shù)。要執(zhí)行父類(lèi)的構(gòu)造函數(shù),需要在子類(lèi)的構(gòu)造函數(shù)中調(diào)用 parent::__construct()。(??和其他語(yǔ)言明顯不同??)
例10.8.使用新標(biāo)準(zhǔn)的構(gòu)造函數(shù)
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();
為了實(shí)現(xiàn)向后兼容性,如果 PHP 5 在類(lèi)中找不到 __construct() 函數(shù),它就會(huì)嘗試尋找舊式的構(gòu)造函數(shù),也就是和類(lèi)同名的函數(shù)。因此唯一會(huì)產(chǎn)生兼容性問(wèn)題的情況是:類(lèi)中已有一個(gè)名為 __construct() 的方法,但它卻又不是構(gòu)造函數(shù)。
析構(gòu)函數(shù)
PHP 5 引入了析構(gòu)函數(shù)的概念,這類(lèi)似于其它面向?qū)ο蟮恼Z(yǔ)言,如 C++。析構(gòu)函數(shù)會(huì)在到某個(gè)對(duì)象的所有引用都被刪除或者當(dāng)對(duì)象被顯式銷(xiāo)毀時(shí)執(zhí)行。
例10.9.析構(gòu)函數(shù)示例
class MyDestructableClass {
function __construct() {
print "In constructor\n";
$this->name = "MyDestructableClass";
}
function __destruct() {
print "Destroying " . $this->name . "\n";
}
}
$obj = new MyDestructableClass();
和構(gòu)造函數(shù)一樣,父類(lèi)的析構(gòu)函數(shù)不會(huì)被引擎暗中調(diào)用。要執(zhí)行父類(lèi)的析構(gòu)函數(shù),必須在子類(lèi)的析構(gòu)函數(shù)體中顯式調(diào)用 parent::__destruct()。 (??和其他語(yǔ)言明顯不同??)
注意:
析構(gòu)函數(shù)在腳本關(guān)閉時(shí)調(diào)用,此時(shí)所有的頭信息已經(jīng)發(fā)出。
注意:
試圖在析構(gòu)函數(shù)中拋出一個(gè)異常會(huì)導(dǎo)致致命錯(cuò)誤。
相關(guān)文章
php實(shí)現(xiàn)的pdo公共類(lèi)定義與用法示例
這篇文章主要介紹了php實(shí)現(xiàn)的pdo公共類(lèi)定義與用法,結(jié)合具體實(shí)例形式分析了php實(shí)現(xiàn)的pdo操作類(lèi)定義及查詢、插入等使用技巧,需要的朋友可以參考下2017-07-07php實(shí)現(xiàn)xml數(shù)據(jù)轉(zhuǎn)數(shù)組兩種方式
這篇文章主要為大家詳細(xì)介紹了php實(shí)現(xiàn)xml數(shù)據(jù)轉(zhuǎn)數(shù)組兩種方式的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以參考下2023-11-11PHP常用函數(shù)總結(jié)(180多個(gè))
這篇文章主要介紹了PHP常用函數(shù)總結(jié)(160多個(gè)),需要的朋友可以參考下2016-12-12php !function_exists("T7FC56270E7A70FA81A5935B72EACBE29
今天在百度知道上面有個(gè)朋友問(wèn)php代碼解密的問(wèn)題,看了代碼不是常見(jiàn)幾種比較感興趣,特意搜索了下,發(fā)現(xiàn)下面的方法,解決了,具體的看最后的說(shuō)明。2011-01-01PHP獲取欄目的所有子級(jí)和孫級(jí)欄目的ID號(hào)示例
這篇文章主要介紹了PHP獲取欄目的所有子級(jí)和孫級(jí)欄目的ID號(hào)的具體實(shí)現(xiàn),需要的朋友可以參考下2014-04-04PHP獲取中國(guó)時(shí)間(上海時(shí)區(qū)時(shí)間)及美國(guó)時(shí)間的方法
這篇文章主要介紹了PHP獲取中國(guó)時(shí)間(上海時(shí)區(qū)時(shí)間)及美國(guó)時(shí)間的方法,涉及php時(shí)區(qū)選擇及日期時(shí)間相關(guān)操作技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2017-02-02