2012-04-30 94 views
-3

呼叫__construct從__destruct()()函數,如果從析構函數調用構造函數,會發生什麼情況?

<?php 

public function __construct() { 
    echo "Hi"; 
} 

public function __destruct() { 
    $this->__construct(); 
} 

?> 

將它創建無限循環?

+11

你試過了嗎?這是一個很好的發現方式。 –

+0

它打印兩次,這就是它......但它仍然在後臺運行或不運行?有什麼方法可以檢查嗎? – doNotCheckMyBlog

+0

@Craftero爲什麼呢?你沒有創建一個對象(被破壞......),你只是調用一個函數。 – jeroen

回答

4

沒有的,而不是直接的,但這樣會:

class Test { 

    public function __construct() { 
     echo "Hi"; 
    } 

    public function __destruct() { 
     new Test(); 
    } 

} 

new Test(); 

例子:http://ideone.com/94XUg

+0

+1,那太棒了!但有點可怕....謝謝 – doNotCheckMyBlog

4

不,它不會。 __construct只是普通的功能,而所謂的使用new ClassName;

+0

+1,哦,但我看到了幾個代碼,你可以通過調用__construct – doNotCheckMyBlog

+0

@Craftero來調用父節點的構造函數,因爲你在已經創建的對象上調用了父節點的方法,沒有創建新的對象 – lazyhammer

相關問題