Доступ к статическим свойствам с использованием объекта PHP - программирование
Подтвердить что ты не робот

Доступ к статическим свойствам с использованием объекта 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. Нужно больше света на этом..

4b9b3361

Ответ 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 если функция, обращающаяся к переменной, также статична.