簡體   English   中英

面向對象的PHP函數__destruct如何發揮作用?

[英]Object Oriented PHP how does function __destruct come into play?

在PHP中,定義類時; 創建“銷毀” 對象時,通常會有一個__construct (構造函數)和一個__destruct (析構函數)

在PHP中,對象在停止使用時被“銷毀”

現在,這有什么用? 它是如何准確使用的,在哪種情況下它會在PHP等編程語言中變得方便?

“當不再需要一個對象時,必須將其刪除。在函數內創建的對象作為局部變量。(...)每當刪除一個對象時,就會調用它的析構函數成員函數。可以理解為什么構造函數如此重要,對象必須是在它們可以被使用之前正確初始化,但是當對象即將消失時,是否真的需要一個特殊的成員函數被調用?

在許多情況下答案是否定的,我們可以讓編譯器發明一個默認的no-op。 但是假設您的對象包含一個構建它的檢測器命中列表。 沒有詳細說明,這可能是對象擁有的某種動態對象,並通過指針訪問。 現在到了刪除對象的時候,我們希望刪除這個列表,但可能不是它指向的命中! 當遇到對象中的指針時,編譯器無法知道它是否指向對象所擁有的東西並被刪除,或者只是與對象相關但獨立於對象的東西。

所以規則是如果一個對象在其生命周期中創建了其他動態對象,它必須有一個析構函數,然后刪除它們。 如果不能這樣整理,可能會留下只會堵塞內存的孤立對象,這就是所謂的內存泄漏。 即使默認值是可以接受的,定義析構函數也是個好主意......“

了解更多: OO概念:構造函數和析構函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM