Ассоциативный массив как свойство объекта в PHP? Вот есть пример кода:class GetInfo {

private $domains_ip = array();

...

function get_ip($domain)
{
...

$ip = gethostbyname($domain);
$this->domains_ip[$ip] = $domain;
return $ip;

}

}
Но если вывести $this->domains_ip то он все время пустой, то есть новое значение не добавляется. Почему так происходит и как пофиксить. Спасибо!domains_ip);
$ip = gethostbyname($domain);
$this->domains_ip[$ip] = $domain;
return $ip;

}

}
//echo $o->get_ip("google.com");
//echo $o->get_ip("pivo.com");
//echo $o->get_ip("kone.ru");
class my_thread extends Thread {

private $get_info_object;

function __construct(GetInfo $obj)
{
$this->get_info_object = $obj;
}

function check_ip($domain)
{
echo $this->get_info_object->get_ip($domain);
}

}
$o = new GetInfo();
$t = new my_thread($o);
$t->check_ip("google.com");
$t->check_ip("pivo.com");
В общем вот пример, в котором показано, что, почему-то не работает как положено.

21 Авг 2019 в 07:05
174 +1
0
Ответы
1

Проблема заключается в том, что каждый раз при создании нового экземпляра класса my_thread присваивается новый объект GetInfo, а не передается существующий. Таким образом, каждый поток работает с собственным экземпляром GetInfo, и поэтому массив $domains_ip не заполняется.

Чтобы исправить эту проблему, вам нужно передавать один и тот же объект GetInfo в каждый экземпляр my_thread. Пример исправления:

class my_thread extends Thread {
private $get_info_object;
function __construct(GetInfo $obj)
{
$this->get_info_object = $obj;
}
function check_ip($domain)
{
echo $this->get_info_object->get_ip($domain);
}
}
$o = new GetInfo();
$t1 = new my_thread($o);
$t2 = new my_thread($o);
$t1->check_ip("google.com");
$t2->check_ip("pivo.com");

Теперь оба потока будут использовать один и тот же объект GetInfo, и массив $domains_ip будет заполняться правильно.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 005 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир