web-dev-qa-db-fra.com

Accéder aux propriétés statiques à l'aide de PHP objet

Ceci est en référence à Obtenir une propriété statique d'une instance , je suis un débutant et ai le code suivant:

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

Les variables/propriétés statiques sont accessibles uniquement en tant que ClassName :: static_property comme en C++, mais ce n'est pas le cas en PHP ... mais les livres PHP mentionnent principalement le className: : static_property pattern, pas le object :: static_property construct. Besoin de plus de lumière à ce sujet ..

18
user2314576

Les propriétés statiques peuvent être consultées de différentes manières.

Class::$aStaticProp; //by class name

$classname::$aStaticProp; // As of PHP 5.3.0 by object instance

Les propriétés statiques ne sont pas accessibles via l'objet à l'aide de l'opérateur de flèche ->.

A partir de PHP 5.3.0, il est possible de référencer la classe à l'aide d'une variable. La valeur de la variable ne peut pas être un mot clé (par exemple, self, parent et static).

Plus vous pouvez lire dans manuel

20
Robert

$instance::$staticProperty est simplement un raccourci de commodité pour Class::$staticProperty. Comme vous avez déjà une instance de class et que la syntaxe est sans équivoque, PHP vous évite d'écrire un nom de classe potentiellement long. Il n'y a pas de différence fonctionnelle.

10
deceze

dans la classe, vous devez utiliser self :: $ staticPropery si la fonction accédant à la variable est également statique.

0
Alp Altunel