2014-09-18 76 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

相关问题