在先前的文章中為大家帶來了《PHP中怎樣實例化物件並且存取物件成員? 》,其中詳細的介紹了應該怎樣去實例化物件和訪問物件成員,本篇文章我們一起來看一下PHP中的建構子與析構函數,希望對大家有幫助!
PHP類別中建構子也叫作建構器,當時用new關鍵字實例化一個物件時,它可以在物件被建立時自動調用,是類別中的一個特殊函數。與之相對應的函數就是析構函數,析構函數的作用與建構子正好相反,析構函數它可以在物件銷毀前執行操作。那接下來我們一起來看看這兩個函數吧。
<strong><span style="font-size: 20px;">__construct()</span></strong>
#:建構子/方法
__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.'<br>'; echo $this -> study2.'<br>'; echo $this -> study3.'<br>'; echo $this -> study4.'<br>'; } } $object = new study('好好学习','天天向上','福如东海','寿比南山'); ?>範例中的$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 '构造函数被调用了<br>'; } public function __destruct(){ echo '析构函数被调用了<br>'; } } $object = new Website(); echo '好好学习<br>'; echo '天天向上<br>'; ?>輸出結果:
<strong>$this<span style="font-size: 20px;"></span></strong>
#:目前物件
$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('好好学习'); ?>輸出結果: #大家如果有興趣的話,可以點選《
PHP影片教學》進行更多關於PHP知識的學習。
以上是帶你分清類別中的建構函數與析構函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!