В чем проблема неявного поведения при создании двух экземпляров одного класса? 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"; Скорее всего просто не знаю как правильно загуглить
Проблема здесь заключается в том, что свойство $prefix является общим для всех экземпляров класса someClass. Это значит, что если изменить это свойство в одном из экземпляров, оно изменится для всех остальных.
Для того чтобы каждый экземпляр имел свое собственное значение переменной $prefix, необходимо определить ее как статическое свойство:
class someClass { private static $prefix = 'prefix_'; private $str; function __construct($data) { $this->str = self::$prefix.$data; var_dump($this); } }
Теперь значение $prefix будет уникальным для каждого экземпляра класса someClass.
Проблема здесь заключается в том, что свойство $prefix является общим для всех экземпляров класса someClass. Это значит, что если изменить это свойство в одном из экземпляров, оно изменится для всех остальных.
Для того чтобы каждый экземпляр имел свое собственное значение переменной $prefix, необходимо определить ее как статическое свойство:
class someClass{
private static $prefix = 'prefix_';
private $str;
function __construct($data)
{
$this->str = self::$prefix.$data;
var_dump($this);
}
}
Теперь значение $prefix будет уникальным для каждого экземпляра класса someClass.