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;
}