Présentation du projet
Fait partie de la section Programmation Orientée Objet du Journey PHP de Coddy — leçon 82 sur 91.
Défi
FacileCommençons le projet de Système de Gestion de Bibliothèque en posant les bases — une classe Book simple qui servira d'objet de domaine central tout au long de ce chapitre.
Vous organiserez votre code sur deux fichiers :
Book.php— Créez une classeBookqui représente un livre de bibliothèque. Votre livre doit avoir trois propriétés :isbn(string),title(string), etauthor(string). Utilisez la promotion de constructeur (constructor promotion) pour garder votre code propre. Ajoutez une méthode nomméegetInfo()qui retourne une chaîne formatée avec les détails du livre dans ce format :"[title] by [author] (ISBN: [isbn])"main.php— Incluez le fichier Book et donnez vie à votre classe. Vous recevrez trois entrées : l'ISBN, le titre et l'auteur d'un livre. Créez une instance deBookavec ces valeurs et affichez le résultat de l'appel àgetInfo().
C'est la première brique de votre système de bibliothèque. Dans les prochaines leçons, vous développerez cette base en ajoutant des utilisateurs, des fonctionnalités d'emprunt et des fonctions administratives — le tout fonctionnant ensemble comme une application cohérente.
Essayez vous-même
<?php
require_once 'Book.php';
// Lire l'entrée
$isbn = trim(fgets(STDIN));
$title = trim(fgets(STDIN));
$author = trim(fgets(STDIN));
// TODO : Créer une instance de Book avec les valeurs d'entrée
// TODO : Afficher le résultat de l'appel à getInfo()
?>Toutes les leçons de Programmation Orientée Objet
1Les bases de la POO
Fichiers externesIntroduction à la POOClasses vs ObjetsLe mot-clé $thisMéthodesPropriétésConstructeur (__construct)Destructeur (__destruct)Récapitulatif - Calculatrice simple4Héritage
Héritage de baseLe mot-clé parent::Redéfinition de méthodeLe mot-clé finalClasses abstraitesRécapitulatif - Hiérarchie des employés7Encapsulation
Public, Protégé, PrivéModificateurs d'accès en détailGetters et SettersMasquage d'informationPromotion de constructeur (8.0)Récapitulatif - Système de gestion d'étudiants10Concepts avancés de la POO
Composition vs HéritageInjection de dépendancesClasses anonymesÉnumérations (PHP 8.1)Fibers (PHP 8.1)Clonage d'objets : analyse approfondieGénérateurs et Itérateurs13Patrons de conception Partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Méthode ModèlePatron ÉtatPatron CompositePatron Repository2Espaces de noms et Autoloading
Introduction aux espaces de nomsLe mot-clé useStandard d'Autoloading PSR-4L'Autoloader ComposerRécapitulatif - Projet organisé5Interfaces et Contrats
Introduction aux InterfacesImplémentation d'InterfacesImplémentation d'Interfaces MultiplesInterface vs Classe AbstraiteType Hinting avec les InterfacesRécapitulatif - Calculateur de Formes8Méthodes magiques
Introduction aux méthodes magiques__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Clonage d'objets__serialize & __unserializeRécapitulatif - Collection personnalisée11Système de types et gestion des erreurs
Déclarations de typesTypes nullablesTypes d'union et d'intersectionClasses d'exceptionHiérarchie d'exceptions personnaliséesTry, Catch, FinallyRécapitulatif - Validateur de formulaire14Projet : Gestion de bibliothèque
Présentation du projetClasses Livre et Utilisateur3Propriétés de classe
Propriétés d'instance vs Propriétés statiquesConstantes dans les classesMéthodes et propriétés statiquesPropriétés privées et protégéesPropriétés readonly (PHP 8.1)Récapitulatif - Gestionnaire de compte bancaire6Polymorphisme
Retour sur la redéfinition de méthodePolymorphisme via les interfacesType Hinting et Types d'unionLiaison statique tardiveRécapitulatif - Processeur de paiement9Traits
Introduction aux TraitsUtilisation de plusieurs TraitsRésolution des conflits de TraitsMéthodes abstraites dans les TraitsTraits vs Héritage12Patrons de conception Partie 1
Introduction aux patrons de conceptionPatron SingletonPatron FabriquePatron ObservateurPatron Stratégie