構(gòu)造方法與析構(gòu)方法

    構(gòu)造方法與析構(gòu)方法是對象中的兩個特殊方法,它們都與對象的生命周期有關(guān)。構(gòu)造方法是對象創(chuàng)建完成后第一個被對象自動調(diào)用的方法,這也是我們在對象中使用構(gòu)造方法的原因。而析構(gòu)方法是對象在銷毀之前最后一個被對象自動調(diào)用的方法,這也是我們在對象中使用析構(gòu)方法的原因。所以通常使用構(gòu)造方法完成一些對象的初始化工作,使用析構(gòu)方法完成一些對象在銷毀前的清理工作。

為運(yùn)河等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及運(yùn)河網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計、運(yùn)河網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

1、構(gòu)造方法

   在類中聲明構(gòu)造方法的格式如下:

function __construct(參數(shù)列表){       //構(gòu)造方法名稱是以兩個下劃線開始的                                                    __construct()

      //方法體,通常用來對成員屬性進(jìn)行初始化賦值

}

<?php

class person{

//下面是聲明人的成員屬性,都是沒有初值的,在創(chuàng)建對象時,使用構(gòu)造方法賦初值

var $name;

var $sex;

var $age;

//聲明一個構(gòu)造方法,將來創(chuàng)建對象時,為對象的成員屬性賦予初值,參數(shù)中都使用了默認(rèn)參            數(shù)

function __construct($name="",$sex="男",$age="1"){

$this->name=$name;       //在創(chuàng)建對象時,使用傳入的參數(shù)$name為成員屬性                                                 $this->name賦初值

$this->sex=$sex;         //在創(chuàng)建對象時,使用傳入的參數(shù)$sex為成員屬性$this-                                             >sex賦初值

$this->age=$age;         //在創(chuàng)建對象時,使用傳入的參數(shù)$age為成員屬性$this-                                            >age賦初值

}

function say(){

echo "我的名字:".$this->name.";我的性別:".$this->sex.";我的年                                  齡:".$this->age."。<br/>";

}

function run(){

echo $this->name."在走路<br/>";

}

}

//下面三行中實例話person類的三個實例對象,并使用構(gòu)造方法分別為新創(chuàng)建的成員屬性賦予初值

$person1=new person("張三","男","40");        //創(chuàng)建對象$person1時會自動執(zhí)行構(gòu)造方法,將全                                                  部參數(shù)傳給它

$person2=new person("李四","女");        //創(chuàng)建對象$person1時會自動執(zhí)行構(gòu)造方法,傳入前兩個                                             參數(shù)

$person3=new person("王五");        //創(chuàng)建對象$person1時會自動執(zhí)行構(gòu)造方法,只傳入一個參數(shù)

$person1->say();

$person1->run();

$person2->say();

$person2->run();

$person3->say();

$person3->run();

?>

代碼運(yùn)行結(jié)果如下所示:

構(gòu)造方法與析構(gòu)方法

2、析構(gòu)方法

   析構(gòu)方法的聲明格式與構(gòu)造方法相似,在類中聲明的析構(gòu)方法名稱也是固定的,也是以兩個下劃線開頭的方法名“__destruct”,而且析構(gòu)函數(shù)不能帶有任何參數(shù)。在類中聲明析構(gòu)方法的格式如下:

function __destruct(){          //析構(gòu)方法名稱是以兩個下劃線開始的__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;                             //第一個對象將失去引用

$person2=new person("李四","女","20");       

$person3=new person("王五","男","50");        

?>
代碼運(yùn)行結(jié)果為:

構(gòu)造方法與析構(gòu)方法

    因為對象的引用都是存放在棧內(nèi)存中的,由于棧的后進(jìn)先出的特點,最后創(chuàng)建的對象引用會被最先釋放,所以先自動調(diào)用第三個對象的析構(gòu)方法,最后才自動調(diào)用第二個對象的析構(gòu)方法。

新聞名稱:構(gòu)造方法與析構(gòu)方法
本文地址:http://muchs.cn/article0/gdejoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、動態(tài)網(wǎng)站網(wǎng)站制作、響應(yīng)式網(wǎng)站、網(wǎng)站策劃、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管