PHP5可以在類(lèi)中使用__construct()定義一個(gè)構(gòu)造函數(shù),具有構(gòu)造函數(shù)的類(lèi),會(huì)在每次對(duì)象創(chuàng)建的時(shí)候調(diào)用該函數(shù),因此常用來(lái)在對(duì)象創(chuàng)建的時(shí)候進(jìn)行一些初始化工作。
class Car { function __construct() { print "構(gòu)造函數(shù)被調(diào)用\n"; } } $car = new Car(); //實(shí)例化的時(shí)候 會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù)__construct,這里會(huì)輸出一個(gè)字符串
在子類(lèi)中如果定義了__construct則不會(huì)調(diào)用父類(lèi)的__construct,如果需要同時(shí)調(diào)用父類(lèi)的構(gòu)造函數(shù),需要使用parent::__construct()顯式的調(diào)用。
class Car { function __construct() { print "父類(lèi)構(gòu)造函數(shù)被調(diào)用\n"; } } class Truck extends Car { function __construct() { print "子類(lèi)構(gòu)造函數(shù)被調(diào)用\n"; parent::__construct(); } } $car = new Truck();
同樣,PHP5支持析構(gòu)函數(shù),使用__destruct()進(jìn)行定義,析構(gòu)函數(shù)指的是當(dāng)某個(gè)對(duì)象的所有引用被刪除,或者對(duì)象被顯式的銷(xiāo)毀時(shí)會(huì)執(zhí)行的函數(shù)。
class Car { function __construct() { print "構(gòu)造函數(shù)被調(diào)用 \n"; } function __destruct() { print "析構(gòu)函數(shù)被調(diào)用 \n"; } } $car = new Car(); //實(shí)例化時(shí)會(huì)調(diào)用構(gòu)造函數(shù) echo '使用后,準(zhǔn)備銷(xiāo)毀car對(duì)象 \n'; unset($car); //銷(xiāo)毀時(shí)會(huì)調(diào)用析構(gòu)函數(shù)
當(dāng)PHP代碼執(zhí)行完畢以后,會(huì)自動(dòng)回收與銷(xiāo)毀對(duì)象,因此一般情況下不需要顯式的去銷(xiāo)毀對(duì)象。
我也來(lái)試一試:給Car類(lèi)編寫(xiě)一個(gè)構(gòu)造函數(shù)與析構(gòu)函數(shù)。
在右側(cè)代碼編輯器第4行輸入下面代碼:
function __construct() { print "構(gòu)造函數(shù)被調(diào)用 \n"; } function __destruct() { print “析構(gòu)函數(shù)被調(diào)用 \n”; }
class Car { function __construct() { print "構(gòu)造函數(shù)被調(diào)用 \n"; } function __destruct() { print “析構(gòu)函數(shù)被調(diào)用 \n”; } } $car = new Car();
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過(guò)多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開(kāi)微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書(shū)簽
舉報(bào)