您好,登錄后才能下訂單哦!
本篇內容介紹了“類中的構造函數與析構函數是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
PHP類中構造函數也叫作構造器,當時用new關鍵字實例化一個對象時,它可以在對象被創建時自動調用,是類中的一個特殊函數。與之相對應的函數就是析構函數,析構函數的作用與構造函數正好相反,析構函數它可以在對象銷毀前執行操作。那接下來我們一起來看一看這兩個函數吧。
__construct()
:構造函數/方法
在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.'<br>'; echo $this -> study2.'<br>'; echo $this -> study3.'<br>'; echo $this -> study4.'<br>'; } } $object = new study('好好學習','天天向上','福如東海','壽比南山'); ?>
示例中的$this表示當前調用的對象。輸出結果:
由上述結果,我們通過,我們通過__construct()
構造函數,就調用了類中創建的對象。
__destruct()
:析構函數/方法
剛才講到的__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>'; ?>
輸出結果:
由上述實例可以看出,構造函數與析構函數調用的時間不同,構造函數在對象被創建時自動調用,析構函數在對象被垃圾收集器收集前被調用。
$this
:當前對象
在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('好好學習'); ?>
輸出結果:
“類中的構造函數與析構函數是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。