Доступ к статическим свойствам с использованием объекта PHP
Это со ссылкой на Получить статическое свойство экземпляра, я новичок и имею следующий код:
class Foo
{
public static $my_static = 1;
}
class Bar extends Foo
{
}
$foo = new Foo();
$boo = new Bar();
echo Foo::$my_static; // ok
echo Bar::$my_static; // ok
echo $foo::$my_static; // ok
echo $boo::$my_static; // ok
Статические переменные/свойства доступны только как ClassName:: static_property, как в С++, но это не относится к PHP... но в PHP-книгах в основном упоминается className:: static_property, а не конструкцию object:: static_property. Нужно больше света на этом..
Ответы
Ответ 1
Статические свойства могут быть доступны по-разному.
Class::$aStaticProp; //by class name
$classname::$aStaticProp; // As of PHP 5.3.0 by object instance
Статические свойства не могут быть доступны через объект, используя оператор стрелки ->
.
Начиная с PHP 5.3.0, можно ссылаться на класс, используя переменную. Значение переменной не может быть ключевым словом (например, self, parent и static).
Подробнее вы можете прочитать в manual
Ответ 2
$instance::$staticProperty
является просто сокращением удобства для Class::$staticProperty
. Поскольку у вас уже есть экземпляр класса, и синтаксис недвусмыслен, PHP избавляет вас от написания потенциально длинного имени класса. Там нет функциональных различий.
Ответ 3
внутри класса, который вы должны использовать, например, self:: $staticPropery
если функция, обращающаяся к переменной, также статична.