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. 什麼時候使用構造函數,何時使用OnInit
- 6. 什麼時候必須要在C++類中定義析構函數,爲什麼?
- 7. 在MFC中當調用EndDialog()時,類的析構函數什麼時候觸發?
- 8. 什麼時候使用Ruby和什麼時候使用PHP
- 9. 什麼是複製構造函數,什麼時候應該在C#中使用?
- 10. 什麼時候在NDK中調用全局變量的C++析構函數?
- 11. 在C++中,什麼時候析構函數自動爲局部向量調用?
- 12. 什麼時候在嵌套類中調用構造函數(Java)
- 13. 什麼時候在cpp中調用拷貝構造函數?
- 14. 什麼時候使用私有構造函數有用?
- 15. 什麼時候複製構造函數和析構函數被調用,爲什麼?
- 16. 什麼時候在PHP上使用MVC?
- 17. 什麼時候在C++中使用'new'運算符調用構造函數?
- 18. 什麼時候調用SignalR中心構造函數?
- 19. 什麼時候在C++中生成默認構造函數
- 20. 什麼時候可以安全使用PHP strtolower()函數?
- 21. 什麼時候在調用javascript函數時使用()
- 22. 什麼時候應該使用工廠在Perl中封裝構造函數?
- 23. 什麼時候應該在jquery函數中使用return false?
- 24. 什麼時候在javascript中使用函數?
- 25. 什麼時候應該在模板函數中使用typename?
- 26. 什麼時候在postresql查詢中使用COALESCE函數?
- 27. 我們什麼時候需要在codeIgniter中使用base_url()函數?
- 28. 什麼時候編譯和構建,什麼時候不用.NET?
- 29. 什麼時候需要進行顯式的析構函數調用?
- 30. 什麼時候在C++中使用函數引用而不是函數指針?
- 它也用於清理:D – Hanseh 2010-04-11 20:03:53
另外,需要注意的是__destruct不僅被調用,而且被刪除的對象被調用,而且當對象超出範圍時以及腳本結束時 – deadkarma 2010-04-11 20:21:41