В чем проблема неявного поведения при создании двух экземпляров одного класса? 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
168 +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
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир