Menu
Coddy logo textTech

Méthodes et propriétés statiques

Fait partie de la section Programmation Orientée Objet du Journey PHP de Coddy. Leçon 17 sur 91.

Tout comme les propriétés peuvent être statiques, les méthodes peuvent également appartenir à la classe elle-même plutôt qu’à des objets individuels. Les méthodes statiques sont appelées directement sur la classe, sans avoir besoin de créer d’abord une instance.

Tu déclares une méthode statique à l’aide du mot-clé static et tu l’appelles avec le nom de la classe et l’opérateur :: :

<?php
class MathHelper {
    public static function add($a, $b) {
        return $a + $b;
    }
    
    public static function multiply($a, $b) {
        return $a * $b;
    }
}

echo MathHelper::add(5, 3) . "\n";
echo MathHelper::multiply(4, 2);

Sortie :

8
8

Les méthodes statiques fonctionnent bien avec les propriétés statiques. Un modèle courant consiste à utiliser une méthode statique pour gérer les données partagées d’une classe :

<?php
class Counter {
    private static $count = 0;
    
    public static function increment() {
        self::$count++;
    }
    
    public static function getCount() {
        return self::$count;
    }
}

Counter::increment();
Counter::increment();
echo Counter::getCount();

Sortie :

2

Notez que les méthodes statiques ne peuvent pas utiliser $this car il n’y a aucune instance d’objet. Elles peuvent uniquement accéder aux propriétés statiques et aux autres méthodes statiques à l’aide de self::.

Point clé : Les méthodes statiques sont utiles pour les fonctions utilitaires qui n’ont pas besoin de l’état d’un objet, ou pour gérer des données au niveau de la classe. Elles fournissent des fonctionnalités sans nécessiter l’instanciation d’un objet.

challenge icon

Défi

Facile

Construisons un système de génération d’ID qui utilise des méthodes et des propriétés statiques pour créer des identifiants uniques sans avoir besoin d’instancier des objets.

Vous allez créer deux fichiers pour organiser votre code :

  • IdGenerator.php : définissez une classe IdGenerator qui gère la génération d’ID uniques en utilisant uniquement des membres statiques. La classe doit posséder une propriété statique privée $lastId initialisée à 0 et une propriété statique privée $prefix définie sur "ID". Créez une méthode statique generate() qui incrémente le dernier ID et renvoie une chaîne formatée combinant le préfixe et le nouvel ID (comme "ID1", "ID2", etc.). Ajoutez une méthode statique setPrefix($newPrefix) qui modifie le préfixe, ainsi qu’une méthode statique getLastId() qui renvoie la valeur actuelle de $lastId.
  • main.php : incluez le fichier de la classe IdGenerator. Générez deux ID en utilisant le préfixe par défaut et affichez chacun sur sa propre ligne. Modifiez ensuite le préfixe en "USER" à l’aide de la méthode statique, générez deux ID supplémentaires et affichez chacun d’eux. Enfin, affichez le numéro du dernier ID en appelant la méthode statique appropriée.

N’oubliez pas que les méthodes statiques sont appelées directement sur la classe à l’aide de ClassName::methodName() et qu’à l’intérieur de la classe, vous accédez aux propriétés statiques avec self::$propertyName. Comme il n’y a pas d’instance d’objet, vous ne pouvez pas utiliser $this dans les méthodes statiques.

Votre sortie doit montrer la progression des ID avec différents préfixes, en démontrant comment les propriétés statiques conservent leurs valeurs au fil de plusieurs appels de méthodes.

Essayez vous-même

<?php

// Inclure le fichier de la classe IdGenerator
require_once 'IdGenerator.php';

// TODO: Générer deux IDs en utilisant le préfixe par défaut et afficher chacun sur sa propre ligne

// TODO: Changer le préfixe en "USER" en utilisant la méthode statique

// TODO: Générer deux IDs supplémentaires et afficher chacun sur sa propre ligne

// TODO: Afficher le dernier numéro d'ID en utilisant la méthode statique appropriée

?>
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur PHP en ligne