Menu
Coddy logo textTech

Constantes dans les classes

Fait partie de la section Programmation Orientée Objet du Journey PHP de Coddy — leçon 16 sur 91.

Parfois, vous avez besoin de valeurs dans une classe qui ne devraient jamais changer. Les constantes de classe offrent un moyen de définir des valeurs fixes qui restent les mêmes pour toutes les instances et ne peuvent pas être modifiées après leur déclaration.

Vous définissez une constante en utilisant le mot-clé const à l'intérieur d'une classe. Par convention, les noms de constantes sont écrits en majuscules :

<?php
class Circle {
    const PI = 3.14159;
    
    public $radius;
    
    public function __construct($radius) {
        $this->radius = $radius;
    }
    
    public function area() {
        return self::PI * $this->radius * $this->radius;
    }
}

$circle = new Circle(5);
echo $circle->area();

Sortie :

78.53975

Comme les propriétés statiques, les constantes appartiennent à la classe plutôt qu'aux objets individuels. Vous y accédez en utilisant self::CONSTANT_NAME à l'intérieur de la classe ou ClassName::CONSTANT_NAME depuis l'extérieur :

<?php
class HttpStatus {
    const OK = 200;
    const NOT_FOUND = 404;
    const SERVER_ERROR = 500;
}

echo HttpStatus::OK . "\n";
echo HttpStatus::NOT_FOUND;

Sortie :

200
404

Point clé : Contrairement aux propriétés statiques, les constantes ne peuvent pas être modifiées une fois définies. Elles sont idéales pour les valeurs qui doivent rester fixes tout au long de votre application, telles que les valeurs de configuration, les codes d'état ou les constantes mathématiques.

challenge icon

Défi

Facile

Construisons un utilitaire de conversion de température qui utilise des constantes de classe pour stocker des valeurs de conversion fixes qui ne changent jamais.

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

  • Temperature.php — Définissez une classe Temperature qui gère les conversions de température. La classe doit avoir trois constantes : FREEZING_POINT_C définie à 0, BOILING_POINT_C définie à 100, et CONVERSION_FACTOR définie à 1.8 (utilisée pour la conversion de Celsius en Fahrenheit). Incluez une propriété public $celsius et un constructeur qui accepte et définit la valeur Celsius. Ajoutez une méthode toFahrenheit() qui convertit la température Celsius stockée en Fahrenheit en utilisant la formule : (celsius * CONVERSION_FACTOR) + 32. Ajoutez également une méthode getStatus() qui retourne "Freezing" si la température est égale à la constante du point de congélation, "Boiling" si elle est égale à la constante du point d'ébullition, ou "Normal" sinon.
  • main.php — Incluez le fichier de la classe Temperature. Créez trois objets Temperature avec les valeurs 0, 100, et 25. Pour chaque température, affichez la conversion en Fahrenheit suivie du statut sur la même ligne dans ce format : "[fahrenheit]F - [status]". Chaque température doit être sur sa propre ligne. Après avoir affiché les trois, accédez à la constante BOILING_POINT_C directement depuis la classe (en utilisant Temperature::BOILING_POINT_C) et affichez-la sur une nouvelle ligne.

Rappelez-vous que l'on accède aux constantes en utilisant self::CONSTANT_NAME à l'intérieur de la classe et ClassName::CONSTANT_NAME depuis l'extérieur. Contrairement aux propriétés, les constantes n'utilisent pas le symbole $ lors de leur accès.

Aide-mémoire

Les constantes de classe sont des valeurs fixes qui ne changent jamais et sont partagées par toutes les instances d'une classe. Définissez-les à l'aide du mot-clé const :

<?php
class Circle {
    const PI = 3.14159;
    
    public function area($radius) {
        return self::PI * $radius * $radius;
    }
}

Accédez aux constantes en utilisant self::CONSTANT_NAME à l'intérieur de la classe :

return self::PI * $radius * $radius;

Accédez aux constantes en utilisant ClassName::CONSTANT_NAME depuis l'extérieur de la classe :

echo Circle::PI;

Différences clés par rapport aux propriétés statiques :

  • Les constantes ne peuvent pas être modifiées après leur déclaration
  • Les constantes n'utilisent pas le symbole $
  • Les constantes sont idéales pour les valeurs fixes telles que les paramètres de configuration, les codes d'état ou les constantes mathématiques

Par convention, les noms de constantes sont écrits en majuscules :

<?php
class HttpStatus {
    const OK = 200;
    const NOT_FOUND = 404;
    const SERVER_ERROR = 500;
}

echo HttpStatus::OK;  // 200

Essayez vous-même

<?php

require_once 'Temperature.php';

// TODO: Créer trois objets Temperature avec les valeurs 0, 100 et 25

// TODO: Pour chaque température, afficher au format : "[fahrenheit]F - [status]"
// Chaque température sur sa propre ligne

// TODO: Accéder et afficher la constante BOILING_POINT_C directement depuis la classe
// Utiliser la syntaxe ClassName::CONSTANT_NAME

?>
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