溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php中的析構(gòu)函數(shù)和對(duì)象引用是什么?

發(fā)布時(shí)間:2020-05-25 15:07:49 來(lái)源:億速云 閱讀:247 作者:鴿子 欄目:編程語(yǔ)言

(一)、析構(gòu)函數(shù)

1、定義它是一個(gè)特殊的函數(shù)

public function destruct(){}

2、作用:清理對(duì)象,釋放內(nèi)存

3、特點(diǎn):

1、自動(dòng)執(zhí)行,而非手動(dòng)調(diào)用

2、類一旦定義了析構(gòu)函數(shù),程序結(jié)束前就會(huì)銷毀該類下的所有實(shí)例對(duì)象

3、在應(yīng)用程序結(jié)束前的最后一刻執(zhí)行,除非一些特殊情況,比如第4點(diǎn),或者當(dāng)對(duì)象的生命周期結(jié)束以后也會(huì)自動(dòng)執(zhí)行

4、 一旦我們手動(dòng)的銷毀一個(gè)對(duì)象,系統(tǒng)會(huì)自動(dòng)的觸發(fā)該對(duì)象的析構(gòu)函數(shù)

特別注意一個(gè)特殊的情況:就是如果對(duì)象還被其他對(duì)象引用的情況下,它的析構(gòu)函數(shù)也不會(huì)被觸發(fā)

5、在對(duì)象的生命周期結(jié)束前執(zhí)行

6、應(yīng)用程序結(jié)束前的最后一刻,會(huì)銷毀掉還未銷毀的對(duì)象,已經(jīng)銷毀的對(duì)象不會(huì)再次被銷毀

進(jìn)一步得出,一個(gè)對(duì)象的析構(gòu)函數(shù)只能執(zhí)行1次,不會(huì)執(zhí)行多次

7、在php中如果我們不為類定義個(gè)析構(gòu)函數(shù),那么php會(huì)自動(dòng)的為類創(chuàng)建一個(gè)析構(gòu)函數(shù),然后在

程序結(jié)束前調(diào)用默認(rèn)的析構(gòu)函數(shù),但是一旦定義了析構(gòu)函數(shù),就會(huì)執(zhí)行我們寫的析構(gòu)函數(shù)

進(jìn)一步我們就可以在自己的析構(gòu)函數(shù)里寫自己的業(yè)務(wù)代碼

比如如果程序使用了打印機(jī)資源,我們可以銷毀對(duì)象前釋放打印機(jī)資源

相關(guān)的代碼如下:

<?php

 class NbaPlayer{
   
    public $name  = "";//姓名
    public $height = "";//身高
    public $weight = "";//體重
    public $team = "";//團(tuán)隊(duì)
    public $playerName = "";//球員號(hào)碼

    
    public function __construct( $name,$height,$weight,$team,$playerName ){
        $this->name = $name;
        $this->height=$height;
        $this->weight = $weight;
        $this->team = $team;
        $this->playName = $playerName;
        echo "構(gòu)造函數(shù)執(zhí)行了,當(dāng)前對(duì)象是{$this->name}<br/>";
    }
    //析構(gòu)函數(shù)
    public function __destruct(){
        echo "銷毀對(duì)象".$this->name."<br/>";
    }
   
   //跑步
    public function run(){
        echo "跑步中<br/>";
    }
    //跳躍
    public function jump(){
        echo "跳躍<br/>";
    }
    //運(yùn)球
    public function dribble(){
        echo "運(yùn)球<br/>";
    } 
    //傳球
    public function pass(){
        echo "傳球<br/>";
    }
    //投籃
    public function shoot(){
        echo "投籃<br/>";
    }
    //扣籃
    public function dunk(){
        echo "扣籃<br/>";
    }

 }
 //創(chuàng)建喬丹對(duì)象
$jordon = new NbaPlayer("喬丹","1.98米","98公斤","公牛","23");
//輸出喬丹對(duì)象
echo "名稱= ".$jordon->name."<br/>";
//讓喬丹跑步
$jordon->run();

//創(chuàng)建科比對(duì)象
$kobe = new NbaPlayer("科比","2米","93公斤","湖人","24");
//創(chuàng)建詹姆斯對(duì)象
$james = new NbaPlayer("詹姆斯","2.03米","120公斤","熱火","6");
$james1 = new NbaPlayer("詹姆斯1","2.03米","120公斤","熱火","6");
$james2 = new NbaPlayer("詹姆斯2","2.03米","120公斤","熱火","6");

$jordon = null;//手動(dòng)的銷毀了對(duì)象 ,此時(shí)喬丹對(duì)象的析構(gòu)函數(shù)將會(huì)被觸發(fā)

$kobe = null;//手動(dòng)的銷毀了對(duì)象 ,此時(shí)科比對(duì)象的析構(gòu)函數(shù)將會(huì)被觸發(fā)


echo "<b>程序結(jié)束完畢</b><br/>";
?>

接下來(lái),我代碼修改如下,添加一個(gè)Mysql數(shù)據(jù)庫(kù)連接類,然后在NbaPlayer構(gòu)造函數(shù)里面調(diào)用它

這是Mysql.class.php,里面定義了一個(gè)析構(gòu)函數(shù)

<?php
//數(shù)據(jù)庫(kù)類
class Mysql{
    //定義屬性
    public $conn = "";
    //構(gòu)造函數(shù)
    public function __construct( ){
        //初始化行為 初始化方法
        $this->initConn();
    }
    //析構(gòu)函數(shù) 銷毀數(shù)據(jù)庫(kù)連接
    public function __destruct(){
        //銷毀連接
        if( $this->conn ){
            mysqli_close( $this->conn );
            echo "銷毀了連接<br/>";
        }
    }
    
    //定義方法
    //創(chuàng)建公共的方法 獲取數(shù)據(jù)庫(kù)連接
    public function initConn(){
        $config = Array(
            "hostname"=>"127.0.0.1",
            "database"=>"Nbaplayer",
            "username"=>"root",
            "password"=>"root"
        );
        $this->conn = mysqli_connect( $config['hostname'],$config['username'] ,$config['password'],
                $config['database']);
    }
}
?>

接下來(lái)還是定義個(gè)NbaPlayer類,但是為了突出重點(diǎn),所以NbaPlayer類我會(huì)簡(jiǎn)寫如下:

<?php
 require_once "Mysql.class.php";
 class NbaPlayer{
   
    public $name  = "";//姓名
    public $height = "";//身高
    public $weight = "";//體重
    public $team = "";//團(tuán)隊(duì)
    public $playerName = "";//球員號(hào)碼
    public $conn = "";//添加一個(gè)數(shù)據(jù)庫(kù)連接屬性

    
    public function __construct( $name,$height,$weight,$team,$playerName ){
        $this->name = $name;
        $this->height=$height;
        $this->weight = $weight;
        $this->team = $team;
        $this->playName = $playerName;
        //初始化數(shù)據(jù)庫(kù)連接屬性
        $mysql = new Mysql();
        $this->conn = $mysql->conn;
        
    }
    //新增獲取所有Nba球員的方法
     public function getAll(){
         //創(chuàng)建數(shù)據(jù)庫(kù)連接
        $conn = $this->conn;
        //寫sql
        $sql = " select * from ".$this->tableName;
        //執(zhí)行sql
        $result = mysqli_query( $conn,$sql );
        //獲取數(shù)據(jù)
        // mysqli_fetch_all($result)//特點(diǎn):不會(huì)包含字段名
        $list = Array();
        while( $row = mysqli_fetch_assoc(  $result ) ){
            $list[] = $row;
        }
        //返回?cái)?shù)據(jù)
        return $list;
     }

 }
 //創(chuàng)建喬丹對(duì)象
$jordon = new NbaPlayer("喬丹","1.98米","98公斤","公牛","23");

$list = $jordon->getAll();

echo "<b>程序結(jié)束完畢</b><br/>";
?>

當(dāng)你運(yùn)行,你會(huì)發(fā)現(xiàn)錯(cuò)誤,會(huì)發(fā)現(xiàn)連接已經(jīng)被銷毀,在getAll函數(shù)調(diào)用之前,也就是說(shuō),一旦 實(shí)例化了 $jordon = new NbaPlayer("喬丹","1.98米","98公斤","公牛","23");

數(shù)據(jù)庫(kù)連接對(duì)象就銷毀了,其實(shí)如果你去調(diào)試,你會(huì)發(fā)現(xiàn),構(gòu)造函數(shù)里的mysql對(duì)象其實(shí)是在NbaPlayer類的構(gòu)造函數(shù)的最后一個(gè)}執(zhí)行完成后,它就會(huì)被銷毀,為什么呢

這其實(shí)就涉及到變量作用域的問(wèn)題,因?yàn)閙ysql對(duì)象是在構(gòu)造函數(shù)里定義的,所以外面是無(wú)法訪問(wèn)到它的,所以一旦構(gòu)造函數(shù)執(zhí)行完成后,系統(tǒng)會(huì)認(rèn)為它將不再有用,所以就會(huì)

把它清理掉,從而執(zhí)行它的析構(gòu)函數(shù),所以最終你去調(diào)用getAll方法的時(shí)候,數(shù)據(jù)庫(kù)連接都早已斷開(kāi),自然無(wú)法再去執(zhí)行sql,

其實(shí)想要解決掉這個(gè)問(wèn)題,那么就需要了解對(duì)象引用,我們可以結(jié)合對(duì)象引用來(lái)解決這個(gè)問(wèn)題,接下來(lái)先來(lái)了解對(duì)象引用

(二)、對(duì)象引用

總結(jié):

1、變量1=變量2=對(duì)象 會(huì)創(chuàng)建對(duì)象的2個(gè)獨(dú)立引用,但是他們指向的還是同一個(gè)對(duì)象,所以還是會(huì)互相影響

2、變量1=&變量2 只會(huì)創(chuàng)建對(duì)象的一個(gè)引用,因?yàn)樗鼈兪褂猛粋€(gè)對(duì)象引用

3、一個(gè)對(duì)象有沒(méi)有用,就要看它是否完全沒(méi)有被引用了,如果沒(méi)有任何變量引用它,它就真的沒(méi)用了,

才會(huì)被銷毀,進(jìn)而它的析構(gòu)函數(shù)才會(huì)得以執(zhí)行

4、變量1=clone 變量2=對(duì)象,不會(huì)創(chuàng)建對(duì)象的新引用,而是仿造了一個(gè)新的該對(duì)象,具有該對(duì)象通用的屬性和方法

相關(guān)代碼如下:

<?php

 class NbaPlayer{
   
    public $name  = "";//姓名
    public $height = "";//身高
    public $weight = "";//體重
    public $team = "";//團(tuán)隊(duì)
    public $playerName = "";//球員號(hào)碼

    
    public function __construct( $name,$height,$weight,$team,$playerName ){
        $this->name = $name;
        $this->height=$height;
        $this->weight = $weight;
        $this->team = $team;
        $this->playName = $playerName;
        echo "構(gòu)造函數(shù)執(zhí)行了,當(dāng)前對(duì)象是{$this->name}<br/>";
    }
    public function __destruct(){
        echo "銷毀對(duì)象".$this->name."<br/>";
    }
   
   //跑步
    public function run(){
        echo "跑步中<br/>";
    }
    //跳躍
    public function jump(){
        echo "跳躍<br/>";
    }
    //運(yùn)球
    public function dribble(){
        echo "運(yùn)球<br/>";
    } 
    //傳球
    public function pass(){
        echo "傳球<br/>";
    }
    //投籃
    public function shoot(){
        echo "投籃<br/>";
    }
    //扣籃
    public function dunk(){
        echo "扣籃<br/>";
    }

 }
 //創(chuàng)建喬丹對(duì)象
$jordon = new NbaPlayer("喬丹","1.98米","98公斤","公牛","23");
//輸出喬丹對(duì)象
echo "名稱= ".$jordon->name."<br/>";
//讓喬丹跑步
$jordon->run();

//創(chuàng)建科比對(duì)象
$kobe = new NbaPlayer("科比","2米","93公斤","湖人","24");
//創(chuàng)建詹姆斯對(duì)象
$james = new NbaPlayer("詹姆斯","2.03米","120公斤","熱火","6");
$james1 = new NbaPlayer("詹姆斯1","2.03米","120公斤","熱火","6");
$james2 = new NbaPlayer("詹姆斯2","2.03米","120公斤","熱火","6");

 $jordon1 = $jordon;//&符號(hào)表示左邊對(duì)象和右邊對(duì)象其實(shí)就是一個(gè)對(duì)象
 $jordon = null;//手動(dòng)的銷毀了對(duì)象 


echo "<b>程序結(jié)束完畢</b><br/>";
?>

重點(diǎn)解析:本來(lái)不加$jordon1 = $jordon;當(dāng)程序執(zhí)行到$jordon=null,喬丹對(duì)象的析構(gòu)函數(shù)將會(huì)被執(zhí)行,也就是說(shuō) “銷毀對(duì)象喬丹”在“程序結(jié)束完畢” 前顯示
但是加了這句以后,你會(huì)發(fā)現(xiàn)執(zhí)行到$jordon=null的時(shí)候,喬丹對(duì)象的析構(gòu)函數(shù)并沒(méi)有馬上執(zhí)行,而是到應(yīng)用程序結(jié)束后才被系統(tǒng)自動(dòng)執(zhí)行 ,也就是說(shuō)

“銷毀對(duì)象喬丹”在“程序結(jié)束完畢” 后顯示

為什么會(huì)這樣:

接下來(lái)就來(lái)具體分析$jordon1 = $jordon 這行代碼到底讓系統(tǒng)做了什么事情

php中的析構(gòu)函數(shù)和對(duì)象引用是什么?

結(jié)合上面的代碼,其實(shí)我們寫的代碼順序是

$jordon = new NbaPlayer("喬丹","1.98米","98公斤","公牛","23");

$jordon1 = $jordon;

那么$jordon = new NbaPlayer("喬丹","1.98米","98公斤","公牛","23");

說(shuō)明就是

1、創(chuàng)建了喬丹對(duì)象

2、創(chuàng)建了一個(gè)變量,變量名叫jordon

3、創(chuàng)了一個(gè)喬丹對(duì)象的獨(dú)立引用,就是上圖的箭頭

然后$jordon1 = $jordon;

說(shuō)明就是

1、創(chuàng)建了一個(gè)新的變量,名叫jordon1

2、又創(chuàng)建了一個(gè)喬丹對(duì)象的獨(dú)立引用,就是上圖的第二個(gè)箭頭

那么說(shuō)明 喬丹對(duì)象此時(shí)被兩個(gè)變量引用,當(dāng)我們$jordon=null 的時(shí)候,喬丹對(duì)象還被jordon1變量引用,所以此時(shí)喬丹對(duì)象還有用,還有用就不能當(dāng)做垃圾清理掉,

所以這就可以解釋上面的問(wèn)題,喬丹對(duì)象 在最后 才會(huì)被系統(tǒng)銷毀,所以要看一個(gè)對(duì)象是否有用,要看它到底還存不存在變量引用,如果完全不存在變量引用了,那么這個(gè)

對(duì)象才可以被視作完全無(wú)用,它的析構(gòu)函數(shù)才會(huì)被執(zhí)行

好這是對(duì)象引用賦值的一種形式,還有另外一種 就是 =&

代碼如下:

<?php

 class NbaPlayer{
   
    public $name  = "";//姓名
    public $height = "";//身高
    public $weight = "";//體重
    public $team = "";//團(tuán)隊(duì)
    public $playerName = "";//球員號(hào)碼

    
    public function __construct( $name,$height,$weight,$team,$playerName ){
        $this->name = $name;
        $this->height=$height;
        $this->weight = $weight;
        $this->team = $team;
        $this->playName = $playerName;
        echo "構(gòu)造函數(shù)執(zhí)行了,當(dāng)前對(duì)象是{$this->name}<br/>";
    }
    public function __destruct(){
        echo "銷毀對(duì)象".$this->name."<br/>";
    }
   
   //跑步
    public function run(){
        echo "跑步中<br/>";
    }
    //跳躍
    public function jump(){
        echo "跳躍<br/>";
    }
    //運(yùn)球
    public function dribble(){
        echo "運(yùn)球<br/>";
    } 
    //傳球
    public function pass(){
        echo "傳球<br/>";
    }
    //投籃
    public function shoot(){
        echo "投籃<br/>";
    }
    //扣籃
    public function dunk(){
        echo "扣籃<br/>";
    }

 }
 //創(chuàng)建喬丹對(duì)象
$jordon = new NbaPlayer("喬丹","1.98米","98公斤","公牛","23");
//輸出喬丹對(duì)象
echo "名稱= ".$jordon->name."<br/>";
//讓喬丹跑步
$jordon->run();

//創(chuàng)建科比對(duì)象
$kobe = new NbaPlayer("科比","2米","93公斤","湖人","24");
//創(chuàng)建詹姆斯對(duì)象
$james = new NbaPlayer("詹姆斯","2.03米","120公斤","熱火","6");
$james1 = new NbaPlayer("詹姆斯1","2.03米","120公斤","熱火","6");
$james2 = new NbaPlayer("詹姆斯2","2.03米","120公斤","熱火","6");

 $jordon1 = &$jordon;//&符號(hào)表示左邊對(duì)象和右邊對(duì)象其實(shí)就是一個(gè)對(duì)象
 $jordon = null;//手動(dòng)的銷毀了對(duì)象 


echo "<b>程序結(jié)束完畢</b><br/>";
?>

當(dāng)我們把上面的代碼僅僅加上一個(gè) &,也就是把$jordon1 = $jordon 改成 $jordon1 =& $jordon,你會(huì)發(fā)現(xiàn)結(jié)果又變了

變成什么呢,就是當(dāng)執(zhí)行$jordon=null的時(shí)候,喬丹對(duì)象的析構(gòu)函數(shù)還是被執(zhí)行了,為什么呢

我們?cè)賮?lái)看下 $jordon1 = & $jordon 做了什么事情

php中的析構(gòu)函數(shù)和對(duì)象引用是什么?

系統(tǒng)所做事情如下:

1、創(chuàng)建變量,jordon1

2、然后不會(huì)再次創(chuàng)建喬丹對(duì)象引用,$jordon1通過(guò)$jordon變量來(lái)使用同一個(gè)對(duì)象引用來(lái)訪問(wèn)喬丹對(duì)象

所以此時(shí)喬丹對(duì)象,只有一個(gè)對(duì)象引用,不是2個(gè),所以當(dāng)我們$jordon=null的時(shí)候,其實(shí)就是銷毀了那唯一的對(duì)象引用,進(jìn)而導(dǎo)致喬丹對(duì)象完全沒(méi)有了對(duì)象引用,所以他的析構(gòu)函數(shù)此時(shí)會(huì)被觸發(fā)執(zhí)行

不管是$jordon1=$jordon 還是 $jordon1=&jordon ,修改任意變量里面的名稱,都會(huì)導(dǎo)致另外變量的名稱被修改掉,因?yàn)樗麄兌际且玫耐粋€(gè)喬丹對(duì)象

其實(shí)對(duì)象賦值,除了上面2種方式外,還有第三種,就是 clone(淺復(fù)制) ,也就是比如$jordon1 = clone $jordon;

那這樣的賦值方式它究竟又是什么意思呢,其實(shí)相當(dāng)于 仿造了 一個(gè)喬丹對(duì)象

接下來(lái)我們通過(guò)代碼演示

<?php

 class NbaPlayer{
   
    public $name  = "";//姓名
    public $height = "";//身高
    public $weight = "";//體重
    public $team = "";//團(tuán)隊(duì)
    public $playerName = "";//球員號(hào)碼

    
    public function __construct( $name,$height,$weight,$team,$playerName ){
        $this->name = $name;
        $this->height=$height;
        $this->weight = $weight;
        $this->team = $team;
        $this->playName = $playerName;
        // echo "構(gòu)造函數(shù)執(zhí)行了,當(dāng)前對(duì)象是{$this->name}<br/>";
    }
    public function __destruct(){
        echo "銷毀了對(duì)象".$this->name."<br/>";
    }
   
   //跑步
    public function run(){
        echo "跑步中<br/>";
    }
    //跳躍
    public function jump(){
        echo "跳躍<br/>";
    }
    //運(yùn)球
    public function dribble(){
        echo "運(yùn)球<br/>";
    } 
    //傳球
    public function pass(){
        echo "傳球<br/>";
    }
    //投籃
    public function shoot(){
        echo "投籃<br/>";
    }
    //扣籃
    public function dunk(){
        echo "扣籃<br/>";
    }

 }
 //創(chuàng)建喬丹對(duì)象
$jordon = new NbaPlayer("喬丹","1.98米","98公斤","公牛","23");

$jordon1 = clone $jordon;
$jordon1 = null;
$jordon = null;

echo "應(yīng)用程序結(jié)束<br/>";


?>

執(zhí)行結(jié)果如下:

php中的析構(gòu)函數(shù)和對(duì)象引用是什么?

所以$jordon1=clone $jordon;其實(shí)就是 仿造了一個(gè)喬丹對(duì)象,擁有和喬丹對(duì)象一樣的屬性和方法

到目前為止,我們了解了對(duì)象引用,那么結(jié)合對(duì)象引用,我們?nèi)绾谓鉀Q最開(kāi)始的那個(gè)問(wèn)題呢?

大家思考一下再看下面的解決方案

....................................

好,接下來(lái)我們來(lái)看上面我們遇到的問(wèn)題

問(wèn)題是:mysql對(duì)象在構(gòu)造函數(shù)執(zhí)行完畢后,就被銷毀了,導(dǎo)致后面getAll函數(shù)里的數(shù)據(jù)庫(kù)連接無(wú)法使用

解決思路:

1.mysql對(duì)象在構(gòu)造函數(shù)執(zhí)行完成后,就被銷毀了,說(shuō)明mysql對(duì)象此時(shí)沒(méi)有了對(duì)象引用

2.那我們就要讓他在構(gòu)造函數(shù)執(zhí)行完成后,依然存在對(duì)象引用,那么mysql對(duì)象就還有用,還有用就不會(huì)被銷毀

3.在構(gòu)造函數(shù)里,創(chuàng)建mysql對(duì)象的引用,讓它在構(gòu)造函數(shù)執(zhí)行完成后,這個(gè)引用依然存在

4.我們可以定義個(gè)類的新屬性比如$mysql,然后讓$this->mysql = $mysql;這樣就創(chuàng)建了一個(gè)mysql對(duì)象的獨(dú)立引用,而且當(dāng)構(gòu)造函數(shù)執(zhí)行完成后

類的mysql屬性還有用,所以這個(gè)對(duì)象引用還有用,進(jìn)而mysql對(duì)象還有用,就不會(huì)被銷毀

具體代碼如下:

<?php
 require_once "Mysql.class.php";
 class NbaPlayer{
   
    public $name  = "";//姓名
    public $height = "";//身高
    public $weight = "";//體重
    public $team = "";//團(tuán)隊(duì)
    public $playerName = "";//球員號(hào)碼
    public $conn = "";//添加一個(gè)數(shù)據(jù)庫(kù)連接屬性
    public $mysql = "";//新增一個(gè)mysql屬性

    
    public function __construct( $name,$height,$weight,$team,$playerName ){
        $this->name = $name;
        $this->height=$height;
        $this->weight = $weight;
        $this->team = $team;
        $this->playName = $playerName;
        //初始化數(shù)據(jù)庫(kù)連接屬性
        $mysql = new Mysql();
        $this->conn = $mysql->conn;
        //解決問(wèn)題的重點(diǎn)代碼
        $this->mysql = $mysql;//加了這行代碼,getAll中的conn 數(shù)據(jù)庫(kù)連接就不會(huì)銷毀
        
    }
    //新增獲取所有Nba球員的方法
     public function getAll(){
         //創(chuàng)建數(shù)據(jù)庫(kù)連接
        $conn = $this->conn;
        //寫sql
        $sql = " select * from ".$this->tableName;
        //執(zhí)行sql
        $result = mysqli_query( $conn,$sql );
        //獲取數(shù)據(jù)
        // mysqli_fetch_all($result)//特點(diǎn):不會(huì)包含字段名
        $list = Array();
        while( $row = mysqli_fetch_assoc(  $result ) ){
            $list[] = $row;
        }
        //返回?cái)?shù)據(jù)
        return $list;
     }

 }
 //創(chuàng)建喬丹對(duì)象
$jordon = new NbaPlayer("喬丹","1.98米","98公斤","公牛","23");

$list = $jordon->getAll();

echo "<b>程序結(jié)束完畢</b><br/>";
?>

好了,最后我們?cè)偕晕⒆鱿驴偨Y(jié):

1、了解了析構(gòu)函數(shù)的定義,它其實(shí)就是一個(gè)特殊函數(shù)

2、了解了析構(gòu)函數(shù)的作用,就是8個(gè)字,清理對(duì)象,釋放內(nèi)存

3、了解了析構(gòu)函數(shù)的特點(diǎn),特點(diǎn)有點(diǎn)多,主要7點(diǎn)

4、知道了對(duì)象引用的3種賦值方式,一個(gè)是=一個(gè)是=&,還有一個(gè)是clone

以上就是php面向?qū)ο笾鰳?gòu)函數(shù)和對(duì)象引用的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI