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 doivent jamais changer. Les constantes de classe permettent de définir des valeurs fixes qui restent les mêmes pour toutes les instances et qui ne peuvent pas être modifiées après leur déclaration.

Vous définissez une constante à l’aide du mot-clé const à l’intérieur d’une classe. Par convention, les noms de constantes s’écrivent 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 à l’aide de self::CONSTANT_NAME à l’intérieur de la classe ou de 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 essentiel : 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 dans toute 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ératures qui utilise des constantes de classe pour stocker des valeurs de conversion fixes qui ne changent jamais.

Tu vas créer deux fichiers pour organiser ton code :

  • Temperature.php : définir une classe Temperature qui gère les conversions de température. La classe doit comporter 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 des degrés Celsius en degrés Fahrenheit). Inclure une propriété public $celsius ainsi qu'un constructeur qui accepte et définit la valeur en degrés Celsius. Ajouter une méthode toFahrenheit() qui convertit la température Celsius stockée en Fahrenheit à l'aide de la formule : (celsius * CONVERSION_FACTOR) + 32. Ajouter également une méthode getStatus() qui renvoie "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" dans les autres cas.
  • main.php : inclure le fichier de la classe Temperature. Créer trois objets Temperature avec les valeurs 0, 100 et 25. Pour chaque température, afficher la conversion en Fahrenheit, suivie du statut sur la même ligne, dans ce format : "[fahrenheit]F - [status]". Chaque température doit apparaître sur sa propre ligne. Après avoir affiché les trois valeurs, accéder directement à la constante BOILING_POINT_C depuis la classe (en utilisant Temperature::BOILING_POINT_C) et l'afficher sur une nouvelle ligne.

Rappelle-toi que les constantes sont accessibles avec self::CONSTANT_NAME à l'intérieur de la classe et avec ClassName::CONSTANT_NAME depuis l'extérieur. Contrairement aux propriétés, les constantes n'utilisent pas le symbole $ lors de leur accès.

Essayez vous-même

<?php

require_once 'Temperature.php';

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

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

// TODO: Accédez et affichez la constante BOILING_POINT_C directement depuis la classe
// Utilisez 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

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