2016-10-08 117 views
1

我是相當新的使用PHP OOP和嘗試以下操作:OOP刪除類實例

$this->array = new array(); 
$this->array[1] = new myClass($UniqueName); 

在myClass的我有一個循環發送消息到控制檯每5秒顯示的唯一名稱。當應用程序正在運行時,將創建myClass的新實例(1,2,3,4等),而較舊的實例將變得不相關,應該刪除。

當我取消設置數組對象時,該類的循環繼續向控制檯發送消息。

unset($this->array[1]) 

我擔心的是,班級並沒有真的浪費資源。至於循環,我可以手動取消它之前運行未設置,但它似乎像隱藏我的問題從視圖。

希望這是有道理的,有人可以幫助我理解這是否可能。

+1

你可以發佈'myClass'的相關代碼嗎? – Matteo

+0

嘗試設置爲空'$ this-> array [1] = null' – Matteo

+0

如果您刪除對該對象的所有引用,那麼垃圾收集器會自動爲您清理它。這就是說,如果沒有代碼,很難說出你正在做什麼。 – PeeHaa

回答

0

解決我自己的問題。這是我正在測試的一個精簡版本。問題與myClass中的計時器有關。看起來,因爲定時器仍在運行,該類不會被破壞。這只是我一廂情願的想法,它也會終止。取下定時器可以使毀壞發生。

class myClass extends DefaultConfig { 

    public $fileName; 
    public $logLevel; 
    public $loop; 
    public $config; 
    public $db; 


    function __construct ($loop, $db, $config) { 
    $this->fileName = 'myClassObject'; 
    $this->logLevel = 3; 
    $this->loop = $loop; 
    $this->config = new Config($config); 
    $this->HB(); 
    } 


    function __destruct() { 
     print "Destroying " . $this->fileName . "\n"; 
    } 
    public function HB(){ 
    $this->loop->addPeriodicTimer(1, function($timer){ 
     $this->Logging(3, $this->fileName, $this->logLevel, "Server Message"); 
    }); 
    } 
}