PHP хранит ссылку в свойстве объекта (невозможно назначить по ссылке на перегруженный объект)

Поэтому я пытался заставить бот IRC работать с PHP, чтобы он работал локально. Однако я хочу, чтобы он мог извлекать информацию с сайта и периодически публиковать эту информацию. Поэтому я установил pthreads для этого. Тем не менее, у меня возникли проблемы с ссылками на переменные.

Это ошибка, которую я получаю при попытке подключить бота к каналу.

Неустранимая ошибка: невозможно присвоить по ссылке перегруженному объекту в C:\Apache24\htdo cs\muhbot.php в строке 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();
}

Я пытаюсь передать основной класс в качестве ссылки, но продолжаю получать фатальную ошибку сверху. Почему я получаю эту ошибку, и как я могу исправить / обойти ее?

1 ответ

$this то, что вы передаете конструктору recheck, является ссылкой на текущий объект и передается по ссылке ( передаются ли объекты PHP5 по ссылке?).

Избавиться от всех ваших & это должно работать как ожидалось

   public function __construct($bot){
    $this->lastCheck = microtime(true);
    $this->bot = $bot;
  }
Другие вопросы по тегам