您好,登錄后才能下訂單哦!
構(gòu)造方法與析構(gòu)方法是對象中的兩個(gè)特殊方法,它們都與對象的生命周期有關(guān)。構(gòu)造方法是對象創(chuàng)建完成后第一個(gè)被對象自動調(diào)用的方法,這也是我們在對象中使用構(gòu)造方法的原因。而析構(gòu)方法是對象在銷毀之前最后一個(gè)被對象自動調(diào)用的方法,這也是我們在對象中使用析構(gòu)方法的原因。所以通常使用構(gòu)造方法完成一些對象的初始化工作,使用析構(gòu)方法完成一些對象在銷毀前的清理工作。
1、構(gòu)造方法
在類中聲明構(gòu)造方法的格式如下:
function __construct(參數(shù)列表){ //構(gòu)造方法名稱是以兩個(gè)下劃線開始的 __construct()
//方法體,通常用來對成員屬性進(jìn)行初始化賦值
}
<?php
class person{
//下面是聲明人的成員屬性,都是沒有初值的,在創(chuàng)建對象時(shí),使用構(gòu)造方法賦初值
var $name;
var $sex;
var $age;
//聲明一個(gè)構(gòu)造方法,將來創(chuàng)建對象時(shí),為對象的成員屬性賦予初值,參數(shù)中都使用了默認(rèn)參 數(shù)
function __construct($name="",$sex="男",$age="1"){
$this->name=$name; //在創(chuàng)建對象時(shí),使用傳入的參數(shù)$name為成員屬性 $this->name賦初值
$this->sex=$sex; //在創(chuàng)建對象時(shí),使用傳入的參數(shù)$sex為成員屬性$this- >sex賦初值
$this->age=$age; //在創(chuàng)建對象時(shí),使用傳入的參數(shù)$age為成員屬性$this- >age賦初值
}
function say(){
echo "我的名字:".$this->name.";我的性別:".$this->sex.";我的年 齡:".$this->age."。<br/>";
}
function run(){
echo $this->name."在走路<br/>";
}
}
//下面三行中實(shí)例話person類的三個(gè)實(shí)例對象,并使用構(gòu)造方法分別為新創(chuàng)建的成員屬性賦予初值
$person1=new person("張三","男","40"); //創(chuàng)建對象$person1時(shí)會自動執(zhí)行構(gòu)造方法,將全 部參數(shù)傳給它
$person2=new person("李四","女"); //創(chuàng)建對象$person1時(shí)會自動執(zhí)行構(gòu)造方法,傳入前兩個(gè) 參數(shù)
$person3=new person("王五"); //創(chuàng)建對象$person1時(shí)會自動執(zhí)行構(gòu)造方法,只傳入一個(gè)參數(shù)
$person1->say();
$person1->run();
$person2->say();
$person2->run();
$person3->say();
$person3->run();
?>
代碼運(yùn)行結(jié)果如下所示:
2、析構(gòu)方法
析構(gòu)方法的聲明格式與構(gòu)造方法相似,在類中聲明的析構(gòu)方法名稱也是固定的,也是以兩個(gè)下劃線開頭的方法名“__destruct”,而且析構(gòu)函數(shù)不能帶有任何參數(shù)。在類中聲明析構(gòu)方法的格式如下:
function __destruct(){ //析構(gòu)方法名稱是以兩個(gè)下劃線開始的__destruct()
//方法體,通常用來完成一些在對象銷毀前的清理任務(wù)
}
<?php
class person{
var $name;
var $sex;
var $age;
function __construct($name,$sex,$age){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
function say(){
echo "我的名字:".$this->name.";我的性別:".$this->sex.";我的年齡:".$this->age."。<br/>";
}
function run(){
echo $this->name."在走路<br/>";
}
//聲明的析構(gòu)方法,在對象銷毀前自動調(diào)用
function __destruct(){
echo "再見".$this->name."<br/>";
}
}
$person1=new person("張三","男","40");
$person1=null; //第一個(gè)對象將失去引用
$person2=new person("李四","女","20");
$person3=new person("王五","男","50");
?>
代碼運(yùn)行結(jié)果為:
因?yàn)閷ο蟮囊枚际谴娣旁跅?nèi)存中的,由于棧的后進(jìn)先出的特點(diǎn),最后創(chuàng)建的對象引用會被最先釋放,所以先自動調(diào)用第三個(gè)對象的析構(gòu)方法,最后才自動調(diào)用第二個(gè)對象的析構(gòu)方法。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。