Такова природа static
собственности.Статическое свойство является своего рода свойством класса, а не свойством объекта.
Когда вы передали пробел, в соответствии с условием значение статического свойства не будет обновлено, а последнее значение все еще будет в статическом.свойство.
Поскольку статическое свойство не связано ни с одним объектом, следовательно, оно доступно без необходимости какого-либо объекта.
$a = new ClassNameB(12); //static property is set to 12
echo '<br/>';
$a = new ClassNameB(23); //static property is update to 23
echo '<br/>';
$a = new ClassNameB(''); //static property is not updated here it is still 23
EDIT
Вы можете понять так: -
if($value != '') {
$this->name = $value; //
}
То, что делает код выше, это установка значения свойства для текущего объекта (объекта, который инициализируется прямо сейчас).
Так что, когдавы написали
$a = new ClassNameA(12);
Что он делает, это устанавливает для свойства name
значение 12
для объекта a
;
$a = new ClassNameA(23);
Что он делает, так это устанавливаетname
свойство для 23
для объекта a
;
Но когда свойство равно static
, то есть для всего класса, а не для любого объекта.
так, когда вы писали
if($value != '') {
self::$name = $value;
}
Приведенный выше код устанавливаетc стоимость имущества.Обратите внимание, что здесь вы написали self
вместо $this
, что позволяет использовать его только для этого класса, а не для какого-либо объекта.
Я пытался объяснить это лучше, но не знаю, как он объясняетдля вас.