Check

Classe Static

1 - Les constantes de classe

Une constante de classe est une constante utilisable par tout script sans instanciation d’objet. Alors que pour une constante de script, on utilise la syntaxe suivante :

Constante de script

define("NOM_DE_CONSTANTE",valeur);
Pour une constante de classe, vous la déclarez ainsi :

Constante de classe

const NOM_DE_CONSTANTE = valeur;
Vous l’utilisez ainsi :

Constante de classe

NomDeLaClasse::NOM_DE_CONSTANTE[](#instanc)

class Constante
{
            const PII = 3.14;
            ...
}
// Appel de la constante
echo Constante::PII; // Affiche 3.14

2 - Méthode statique, variable 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 que ce soit possible pour une méthode statique).

Comme les méthodes statiques peuvent être appelées sans qu’une instance d’objet n’ait été créée, la pseudo-variable $this n’est pas disponible dans les méthodes déclarées comme statiques.

On ne peut pas accéder à des propriétés statiques à travers l’objet en utilisant l’opérateur ->.

3 - Les opérateurs self et ::

a - appel à l’extérieur de la classe

L’exemple est volontairement en dehors des bonnes pratiques de la création de classe. Pour une constante appelée en dehors de la classe, la déclaration est la suivante :

class Visite
{
    public static float $prixVisite = 10;
    public static function maMethode{
        echo 'Le prix de la visite est de';
     }
    ...
}
// syntaxe d’appel de la constante
echo Visite::$prixVisite; // Notez le $ devant le nom de la variable
                          // affiche 10
// syntaxe d’appel de la méthode
echo "Visite::maMethode() Visite::$prixVisite";  // Affiche Le prix de la visite est de 10        
Appel en dehors de la classe. L’opérateur :: doit être utilisé lorsqu’une propriété ou une fonction statique est appelée en dehors de la classe.

b - appel à l’intérieur de la classe

Le mot self et l’opérateur de résolution permettent d’accéder aux éléments static de la classe elle-même.

self n’est pas précédé par $ car self ne représente pas une variable, mais la classe elle-même. $this fait référence à une variable spécifique de sorte qu’elle ait un préfixe $.

class Visite
{
    private static float $prixVisite = 10;
    private static function maVisite{
             return self:: $prixVisite *2
    }
    public static function maMethode{
        echo "Le prix de la visite est de self::maVisite()";
     }
    ...
}

// syntaxe d’appel de la méthode
echo Visite::maMethode()  // Affiche Le prix de la visite est de 20
Appel à l’intérieur de la classe.
L’opérateur self doit être utilisé lorsqu’une propriété ou une fonction statique est appelée à l’intérieur de la classe.