析構函數
php析構函數的作用剛好和構造函數相反,構造函數是在對象實例化時自動執行,而析構函數在對象被銷毀時自動執行。
默認情況下,php僅釋放對象屬性所占用的內存,並不銷毀對象相關的資源,而利用析構函數在使用一個對象之後執行代碼來清除內存,並將對象從內存中銷毀。析構函數__destruct()結構形式如下:
代碼如下 復制代碼析構函數是由系統自動調用,不能帶參數。
實例:
代碼如下 復制代碼<?php
class des{
function __destruct(){
echo "運行結束,執行析構函數";
}
}
$p=new des(); /* 實例化類 */
$sum=0;
for($i=0;$i<10;$i++){
$sum=$sum+$i;
echo $sum ."<br>";
}
?>
析構函數的調用
php如何調用析構函數?當php腳本不再與對象相關時將調用析構函數。如果要明確地銷毀一個對象調用析構函數,可以給指向對象的變量不分配任何值,通常將變量賦值為NULL或者用unset()函數。
實例:
代碼如下 復制代碼<?php
class des{
function __destruct(){
echo "對象被銷毀,執行析構函數<br>";
}
}
$p=new des(); /* 實例化類 */
echo "程序開始<br>";
unset($p); /* 銷毀變量$p */
echo "程序結束";
?>
構造函數
我們在使用類的過程中,有時需要立即為實例化對象的多個字段父子,如果通過手工,會帶來很多不可預測的問題,而如果在對象創建過程中自動執行,則會帶來很多方便。
php構造函數作用就是當類被實例化時,會自動執行的函數,又稱為構造函數。
構造函數的聲明和其它函數一樣,知識構造函數的名稱是“__construct”固定的名稱,其結構形式如下:
代碼如下 復制代碼function __construct([argument1,argument2,argument3]){
/* class initialization code */
}
實例:
代碼如下 復制代碼<?php
class user{
public $name;
private $password;
private $login;
public function __construct($name,$password){
$this->name=$name;
$this->password=$password;
$this->login=time();
}
function getlogin(){
return(date('M d,Y',$this->login));
}
}
$user=new user('Marry','888888');
echo "用戶名: ". $user->name. "<br>";
print("訪問時間". $user->getlogin());
?>
調用父類構造函數
構造函數可以被子類調用,php調用父類構造函數時必須使用parent關鍵字,否則不會自動調用。
實例:
代碼如下 復制代碼<?php
class task1{
public function __construct(){
echo "today is Monday". "<br>";
}
}
class task2 extends task1{
function __construct(){
parent::__construct(); /* 調用父類構造函數 */
echo "I must work!";
}
}
new task2;
?>