В чем проблема неявного поведения при создании двух экземпляров одного класса? class someClass
{
private $prefix = 'prefix_';
private $str;
function __construct($data)
{
$this->str = $this->prefix.$data;
var_dump($this);
}
}
//Это в другом файле соответственно
$one = new someClass('data');
$two = new someClass('AnotherData');
При создании второго экземпляра внутри класса будто исчезает $prefix
DUMP:
$one = string "prefix_data";
$two = string "AnotherData";
Скорее всего просто не знаю как правильно загуглить

21 Авг 2019 в 07:03
149 +1
0
Ответы
1

Проблема здесь заключается в том, что свойство $prefix является общим для всех экземпляров класса someClass. Это значит, что если изменить это свойство в одном из экземпляров, оно изменится для всех остальных.

Для того чтобы каждый экземпляр имел свое собственное значение переменной $prefix, необходимо определить ее как статическое свойство:

class someClass
{
private static $prefix = 'prefix_';
private $str;
function __construct($data)
{
$this->str = self::$prefix.$data;
var_dump($this);
}
}

Теперь значение $prefix будет уникальным для каждого экземпляра класса someClass.

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