Envoyé par
Gaetch
Par contre je ne suis pas sûr d'avoir compris pour l'opérateur ::
Il s'utilise pour les membres "static", c'est à dire ceux qui n'existent qu'en un seul exemplaire, quel que soit le nombres d'instances de la classe ? Par exemple un compteur d'instances justement ?
Je ne pense pas que ce soit une question d'exemplaire.
La déclaration "static" est faite pour définir une portée (particulière), une visibilité, on dit aussi accessibilité d'une propriété, ou d'une méthode (pour une classe).
La définition du manuel me semble parfaite :
-> Php5 : static
-> L'opérateur de résolution de portée ::
Statique
Le fait de déclarer des propriétés ou des méthodes comme statiques
vous permet d'y accéder sans avoir besoin d'instancier la classe. On ne peut accéder à une propriété déclarée comme statique avec l'objet instancié d'une classe (bien qu'une méthode statique le puisse).
Comme les méthodes statiques peuvent être appelées sans objet, la pseudo-variable
$this n'est pas disponible dans la méthode déclarée en tant que statique.
On ne peut pas accéder à des propriétés statiques à travers l'objet en utilisant l'opérateur ->.
A partir du moment où tu parviens à bien saisir la nuance de cette déclaration statique, de ces avantages et inconvénients du faite de cette visibilité particulière, tu ne devrais rencontrer moins de problème sur sa syntaxe.
Attention, Php a évolué sur cette aspect à partir de Php5.3.0, ce qui peut être déroutant, et même provoquer des bugs sur un projet développé en local sur Php5.3 et un site en production sur une version antérieure, genre Php5.2.* si on y fait pas gaffe.
print $classname::$my_static; // Depuis PHP 5.3.0
Aussi, la syntaxe d'une constante de classe est assez proche de celle d'une propriété statique :
1 2 3
|
echo UneClasse::constante; // Une constante de classe
echo AutreClasse::$propriete; // Une propriété statique d'une classe |
Partager