Menu
Coddy logo textTech

Introduction aux méthodes magiques

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

Les méthodes magiques sont des méthodes spéciales en PHP qui commencent par deux traits de soulignement (__) et qui sont automatiquement appelées par PHP en réponse à certains événements ou actions. Vous en avez déjà utilisé deux : __construct() et __destruct().

Ces methods vous permettent de vous intégrer au comportement interne de PHP et de personnaliser la manière dont vos objects réagissent aux opérations courantes.

Par exemple, que se passe-t-il lorsque vous essayez d’afficher un objet ? Ou d’accéder à une propriété qui n’existe pas ? Les méthodes magiques vous donnent le contrôle sur ces situations.

Voici un aperçu rapide des méthodes magiques les plus couramment utilisées :

MéthodeDéclenché lorsque
__construct()Objet créé
__destruct()Objet détruit
__toString()Objet utilisé comme une chaîne
__get()Accès à une propriété non définie
__set()Définition d’une propriété non définie
__call()Appel d’une méthode non définie
__clone()Objet cloné
<?php
class Book {
    public function __construct(
        private string $title
    ) {}
    
    public function __toString(): string {
        return "Book: " . $this->title;
    }
}

$book = new Book("PHP Mastery");
echo $book;

Sortie :

Book: PHP Mastery

Sans __toString(), tenter d’afficher un objet avec echo provoquerait une erreur. La méthode magique intercepte cette action et renvoie à la place une représentation sous forme de chaîne. Dans les prochaines leçons, nous examinerons chaque méthode magique en détail.

challenge icon

Défi

Facile

Construisons un système de catalogue de films qui vous initie aux méthodes magiques. Vous allez créer une classe Movie qui utilise __construct() pour initialiser les données du film et __toString() pour fournir une représentation sous forme de chaîne claire lorsque l’objet est affiché.

Vous allez organiser votre code sur deux fichiers :

  • Movie.php : créez une classe Movie qui représente les films de votre catalogue. Utilisez la promotion du constructeur pour définir les propriétés privées $title (chaîne), $director (chaîne) et $year (entier). Implémentez la méthode magique __toString() afin qu’elle renvoie une chaîne formatée : "[title] ([year]) - Directed by [director]". Cela permet d’afficher directement vos objets film sans appeler une méthode distincte.
  • main.php : incluez le fichier Movie. Vous recevrez trois entrées : le titre d’un film, le nom d’un réalisateur et une année de sortie. Créez une instance de Movie à l’aide de ces valeurs (convertissez l’année en entier). Affichez ensuite simplement l’objet film directement : la méthode __toString() sera appelée automatiquement pour produire la sortie.

La magie de __toString() réside dans le fait que PHP l’appelle automatiquement chaque fois que votre objet est utilisé dans un contexte de chaîne. Au lieu d’écrire echo $movie->getInfo();, vous pouvez simplement écrire echo $movie; et PHP s’occupe de la conversion pour vous. Cela rend vos objets plus intuitifs à utiliser.

Essayez vous-même

<?php

require_once 'Movie.php';

// Lire l'entrée
$title = trim(fgets(STDIN));
$director = trim(fgets(STDIN));
$year = intval(fgets(STDIN));

// TODO: Créer une instance de Movie en utilisant les valeurs d'entrée

// TODO: Afficher l'objet movie directement (la méthode __toString() sera appelée automatiquement)

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