首頁  >  文章  >  後端開發  >  帶你分清類別中的建構函數與析構函數

帶你分清類別中的建構函數與析構函數

WBOY
WBOY原創
2021-10-25 10:33:353071瀏覽

在先前的文章中為大家帶來了《PHP中怎樣實例化物件並且存取物件成員? 》,其中詳細的介紹了應該怎樣去實例化物件和訪問物件成員,本篇文章我們一起來看一下PHP中的建構子與析構函數,希望對大家有幫助!

帶你分清類別中的建構函數與析構函數

PHP類別中建構子也叫作建構器,當時用new關鍵字實例化一個物件時,它可以在物件被建立時自動調用,是類別中的一個特殊函數。與之相對應的函數就是析構函數,析構函數的作用與建構子正好相反,析構函數它可以在物件銷毀前執行操作。那接下來我們一起來看看這兩個函數吧。

<strong><span style="font-size: 20px;">__construct()</span></strong>#:建構子/方法

##在PHP的類別中,我們使用

__construct()作為類別的建構函數,建構函數是當物件被建立時,類別中被自動呼叫的第一個函數,並且一個類別中只能存在一個建構函數,需要注意的是,如果建構函數中有參數的話,那麼實例化也需要傳入對應的參數。

建構子建立的語法格式如下:

public function __construct(参数列表){
    ... ...
}

要注意的是,其中的參數清單是可選的,不需要的時候可以省略。 construct前面是兩個下劃線

__

實例如下:

<?php
    class study{
        public $study1, $study2, $study3,$study4;
        public function __construct($str1, $str2, $str3,$str4){
            $this -> study1 = $str1;
            $this -> study2 = $str2;
            $this -> study3 = $str3;
            $this -> study4 = $str4;
            $this -> demo();
        }
        public function demo(){
            echo $this -> study1.&#39;<br>&#39;;
            echo $this -> study2.&#39;<br>&#39;;
            echo $this -> study3.&#39;<br>&#39;;
            echo $this -> study4.&#39;<br>&#39;;
        }
    }
    $object = new study(&#39;好好学习&#39;,&#39;天天向上&#39;,&#39;福如东海&#39;,&#39;寿比南山&#39;);
?>

範例中的$this表示目前呼叫的物件。輸出結果:

帶你分清類別中的建構函數與析構函數

由上述結果,我們透過,我們透過

__construct()建構函數,就呼叫了類別中所建立的物件。

<strong>__destruct()<span style="font-size: 20px;"></span></strong>#:析構函數/方法

剛才講到的

__construct()建構函數,它會在物件被創建的時候調用,與之相對應的就是析構函數,析構函數的作用與建構子相反,析構函數只有當物件從記憶體中刪除之前才會被自動調用,在PHP中有垃圾回收機制,當物件無法被存取就會自動啟動垃圾回收機制,析構函數就是垃圾回收物件前調用。

__destruct()函數的語法格式如下:

public function __destruct(){
    ... ...
}

要注意的是,與建構子類似,destruct前面也是兩個下劃線

__;不同的是析構函數不能帶有任何參數。

實例如下:

<?php
    class Website{
        public $study1, $study2;
        public function __construct(){
            echo &#39;构造函数被调用了<br>&#39;;
        }
        public function __destruct(){
            echo &#39;析构函数被调用了<br>&#39;;
        }
    }
    $object = new Website();
    echo &#39;好好学习<br>&#39;;
    echo &#39;天天向上<br>&#39;;
?>

輸出結果:


帶你分清類別中的建構函數與析構函數

#由上述實例可以看出,建構子與析構函數調用的時間不同,建構函數在物件被創建時自動調用,析構函數在物件被垃圾收集器收集前被調用。

<strong>$this<span style="font-size: 20px;"></span></strong>#:目前物件

在PHP面在物件程式設計中,物件被建立之後,在物件中的每個成員方法裡,都會存在一個特殊的物件引用“

$this”,與連接符號->聯合使用,專門用來完成物件內部成員之間的存取。範例如下:

$this -> 成员属性;
$this -> 成员方法(参数列表);

我們在類別中存取一個成員屬性時,後面只要跟著屬性名稱就行了,不用加$符號,$this只能在物件中使用,沒有物件就沒有$this。

範例如下:


<?php
    class Website{
        public $name;
        public function __construct($name){
            $this -> name = $name;
            $this -> name();
        }
        public function name(){
            echo $this -> name;
        }
    }
    $object = new Website(&#39;好好学习&#39;);
?>

輸出結果:

帶你分清類別中的建構函數與析構函數

#大家如果有興趣的話,可以點選《

PHP影片教學》進行更多關於PHP知識的學習。

以上是帶你分清類別中的建構函數與析構函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn