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 ..
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
$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.
dans la classe, vous devez utiliser self :: $ staticPropery si la fonction accédant à la variable est également statique.