2014-09-18 74 views
2

所以我一直試圖讓一個IRC bot與PHP一起工作來在本地運行。但是,我希望它能夠從網站檢索信息,並定期發佈此信息。所以我安裝了pthreads來做到這一點。但是,我在引用變量時遇到了一些問題。在對象屬性中存儲引用的PHP(不能通過引用來分配過載的對象)

這是我試圖將機器人連接到通道時出現的錯誤。

Fatal error: Cannot assign by reference to overloaded object in C:\Apache24\htdo cs\muhbot.php on line 128

這是它給我一個錯誤的代碼。 128行是__construct()函數的最後一行。

class recheck extends Thread { 
    var $lastCheck,$bot; 
    public function __construct(&$bot){ 
     $this->lastCheck = microtime(true); 
     $this->bot = &$bot; 
    } 

$ bot是管理IRC連接的類對象。該類由該類中的函數創建。

function startCheck() 
{ 
    $ReChecker = new recheck($this); 
    $ReChecker->start(); 
} 

我想通過主類作爲參考,但不斷從上面得到致命的錯誤。爲什麼我得到這個錯誤,以及如何修復/解決它?

回答

0

您傳遞給重新檢查構造函數的$this是對當前對象的引用,並通過引用傳遞(Are PHP5 objects passed by reference?)。

擺脫所有&一個它應該按預期工作

public function __construct($bot){ 
    $this->lastCheck = microtime(true); 
    $this->bot = $bot; 
    } 
+0

這實際上是我第一次嘗試,並稱其爲參考之前。但是當我嘗試訪問連接時,我稍後又收到另一個錯誤。 「PHP警告:fputs()期望參數1爲 資源,在第92行C:\ Apache24 \ htdocs \ muhbot.php中給出的整數。出於某種原因,它將類屬性讀取爲整數,而不是資源。 – TUSF 2014-09-18 22:28:12

+0

函數'fputs()'寫入資源句柄(如文件),因爲它是第一個參數,而不是對象。你的'fputs'錯誤與對象引用無關 - 你不應該將它傳遞給一個對象。 – Ray 2014-09-19 13:54:10

+0

@TUSF是否解決了您的問題? – Ray 2014-10-13 19:51:46