18
A
回答
10
它給物體一個準備被殺死的機會。這可能意味着手動清理,狀態持久化等。
例如,模型可能想要將其當前所有屬性保存回數據庫。
或者,數據庫對象本身可能想要關閉它用來與數據庫服務器通信的套接字。
2
假設我有一個Result
類,它是mysqli_result對象的包裝器(實現Iterator,以及其他細節)。當我銷燬我的一個Result
對象時,我想確保在mysqli_result
對象上調用free()
方法來回收它正在使用的內存。所以我在我的Result
課的破壞者中這樣做。
3
所以,你可能知道什麼是構造函數。如果構造函數設置,析構函數會清除。這裏有一個來自PHP站點的例子:
<?php
class my_class {
public $error_reporting = false;
function __construct($error_reporting = false) {
$this->error_reporting = $error_reporting;
}
function __destruct() {
if($this->error_reporting === true) $this->show_report();
unset($this->error_reporting);
}
?>
Here's the link到PHP文檔的主題。
+0
爲什麼它甚至需要刪除任何東西。如果對象被破壞,引用也會被破壞,並且當沒有更多的引用時,它所依賴的對象也不會被引用,所以這些依賴關係的析構函數將被調用。 – Hafiz 2017-11-15 13:01:18
相關問題
- 1. 什麼時候在C++中調用析構函數?
- 2. 什麼時候使用QTimer調用多個函數調用的析構函數?
- 3. 什麼時候注入構造函數,什麼時候是CDI
- 4. 如何知道什麼時候在析構函數中引發異常php
- 5. 在MFC中當調用EndDialog()時,類的析構函數什麼時候觸發?
- 6. 什麼是複製構造函數,什麼時候應該在C#中使用?
- 7. 什麼時候使用Ruby和什麼時候使用PHP
- 8. 什麼時候在嵌套類中調用構造函數(Java)
- 9. 什麼時候複製構造函數和析構函數被調用,爲什麼?
- 10. 什麼時候在PHP上使用MVC?
- 11. 什麼時候應該使用工廠在Perl中封裝構造函數?
- 12. 什麼時候應該在jquery函數中使用return false?
- 13. 什麼時候在javascript中使用函數?
- 14. 什麼時候需要從構造函數調用`super`?
- 15. 什麼時候使用for-each和什麼時候在xslt中使用apply-templates?
- 16. 什麼時候應該使用AWS,什麼時候不使用
- 17. intn_t什麼時候使用它,什麼時候不使用
- 18. 什麼時候使用__proto__和什麼時候使用原型
- 19. 在C#中,什麼時候應該使用一個結構,什麼時候應該使用一個類?
- 20. 爲什麼不調用析構函數?
- 21. 什麼時候在Django中使用「AbstractBaseUser」?
- 22. 什麼時候在.NET中使用GC.Collect()?
- 23. 什麼時候在mysql中使用OPTIMIZE
- 24. 什麼時候在hibernate中使用Criteria.ALIAS_TO_ENTITY_MAP?
- 25. 什麼時候在Java中使用「this」
- 26. 什麼時候在C++中使用「declare」?
- 27. 什麼時候是在C#中調用的靜態構造函數?
- 28. 零參數構造函數有什麼好處?什麼時候是理想的?
- 29. 什麼時候去構造函數注入和什麼時候去參數注入Spring
- 30. 什麼時候執行了javascript函數
- 它也用於清理:D – Hanseh 2010-04-11 20:03:53
另外,需要注意的是__destruct不僅被調用,而且被刪除的對象被調用,而且當對象超出範圍時以及腳本結束時 – deadkarma 2010-04-11 20:21:41