Exercices corrigés PHP – Programmation Orientée Objet | Partie 1
Avec des exercices corrigés en PHP, vous pratiquerez divers concepts du langage de programmation PHP. Vous commencerez par des exercices PHP de base à des exercices plus avancés. La solution est fournie pour chaque exercice. Vous devez essayer de résoudre chaque problème par vous-même avant de vérifier la solution. Si vous avez des questions concernant chaque problème, nous vous encourageons à les poster sur notre forum.
Exercice 1:
Écrivez un programme PHP pour créer une classe appelée « Personne » avec un nom et un attribut age. Créez deux instances de la classe « Personne », définissez leurs attributs à l’aide du constructeur et affichez leur nom et leur âge.
Exemple de sortie:
Alex Babtise a 25 ans. Emily Tonari a 18 ans.
Diagrame de classe:

<?php // Définir la classe Person class Person { // Déclarer une variable privée pour stocker le nom de la // personne private $name; // Déclarer une variable privée pour stocker l'âge de la personne private $age; // Constructeur de la classe Person qui initialise // les variables name et age public function __construct($name, $age) { // Attribuer à la variable name la valeur du paramètre name $this->name = $name; // Attribuer à la variable age la valeur du paramètre age $this->age = $age; } // Méthode pour récupérer le nom de la personne public function getName() { // Retourner la valeur de la variable name return $this->name; } // Méthode pour récupérer l'âge de la personne public function getAge() { // Retourner la valeur de la variable age return $this->age; } // Méthode pour définir le nom de la personne public function setName($name) { // Attribuer à la variable name la valeur du paramètre name $this->name = $name; } // Méthode pour définir l'âge de la personne public function setAge($age) { // Attribuer à la variable age la valeur du paramètre age $this->age = $age; } } // Créer une instance de la classe Person avec le nom 'Alex Babtise' et l'âge de 25 ans $p1 = new Person("Alex Babtise", 25); // Créer une autre instance de la classe Person avec le nom 'Emily Tonari' et l'âge de 18 ans $p2 = new Person("Emily Tonari", 18); // Afficher le nom et l'âge de p1 echo $p1->getName() . " a " . $p1->getAge() . " ans.\n"; // Afficher le nom et l'âge de p2 echo $p2->getName() . " a " . $p2->getAge() . " ans.\n"; // Modifier le nom et l'âge de p2 en utilisant les méthodes setter $p2->setName("Thomas Gozilla"); $p2->setAge(30); // Afficher le nom et l'âge actualisés de p2 echo $p2->getName() . " a " . $p2->getAge() . " ans.\n"; ?>
Sortie:
Alex Babtise a 25 ans. Emily Tonari a 18 ans. Thomas Gozilla a 30 ans.
Explication:
Dans l’exemple ci-dessus, nous créons deux instances de la classe « Personne », nous définissons leurs attributs à l’aide du constructeur et nous affichons leur nom et leur âge à l’aide des méthodes getter. Nous modifions également les attributs à l’aide des méthodes setter et affichons les valeurs mises à jour.
Exercice 2:
Écrivez un programme PHP pour créer une classe appelée « Chien » avec un nom et un attribut de race. Créez deux instances de la classe « Chien », définissez leurs attributs à l’aide du constructeur et modifiez les attributs à l’aide des méthodes setter, puis affichez les valeurs mises à jour.
Diagrame de classe:

<?php // Définir la classe Chien class Chien { // Déclarer une variable privée pour stocker le nom du Chien private $nom; // Déclarer une variable privée pour stocker la race du Chien private $race; // Constructeur de la classe Chien qui initialise les variables // nom et race public function __construct($nom, $race) { // Attribuer à la variable nom la valeur du paramètre nom $this->nom = $nom; // Attribuer à la variable race la valeur du paramètre race $this->race = $race; } // Méthode pour récupérer le nom du Chien public function getNom() { // Retourner la valeur de la variable nom return $this->nom; } // Méthode pour définir le nom du Chien public function setNom($nom) { // Attribuer à la variable nom la valeur du paramètre nom $this->nom = $nom; } // Méthode pour récupérer la race du Chien public function getRace() { // Retourner la valeur de la variable race return $this->race; } // Méthode pour définir la race du Chien public function setRace($race) { // Attribuer à la variable race la valeur du paramètre race $this->race = $race; } } // Créer une instance de la classe Chien avec le nom 'Rio' et la race 'Berger allemand' $ch1 = new Chien("Rio", "Berger allemand"); // Créer une autre instance de la classe Chien avec le nom 'Rocky' et la race 'Husky' $ch2 = new Chien("Rocky", "Husky"); // Afficher le nom et la race de ch1 echo $ch1->getNom() . " est un " . $ch1->getRace() . ".\n"; // Afficher le nom et la race de ch2 echo $ch2->getNom() . " est un " . $ch2->getRace() . ".\n"; // Afficher un message indiquant que la race de ch1 et le nom de ch2 vont être modifiés echo "\nDéfinir la nouvelle race de ch1 et le nouveau nom de ch2:\n"; // Changer la race de ch1 en "Beagle" $ch1->setRace("Beagle"); // Changer le nom de ch2 en "Simba" $ch2->setNom("Simba"); // Afficher le nom et la race mis à jour de ch1 echo $ch1->getNom() . " est un " . $ch1->getRace() . ".\n"; // Afficher le nom et la race mis à jour de ch2 echo $ch2->getNom() . " est un " . $ch2->getRace() . ".\n"; ?>
Sortie:
Rio est un Berger allemand Rocky est un Husky Définir la nouvelle race de ch1 et le nouveau nom de ch2: Rio est un Beagle Simba est un Husky
Exercice 3:
Écrire un programme PHP pour créer une classe appelée « Livre » avec des attributs pour le titre, l’auteur et l’ISBN, et des méthodes pour ajouter et supprimer des livres d’une collection.
Diagrame de classe:

<?php // Définir la classe Livre class Livre { // Déclarer une variable privée pour stocker le titre du livre private $titre; // Déclarer une variable privée pour stocker l'auteur du livre private $auteur; // Déclarer une variable privée pour stocker l'ISBN du livre private $ISBN; // Déclarez un tableau statique pour stocker les livres private static $livres = []; // Constructeur de la classe Livre qui initialise les variables // titre, auteur et ISBN public function __construct($titre, $auteur, $ISBN) { // Attribuer à la variable 'titre' la valeur du paramètre // 'titre' fourni $this->titre = $titre; // Attribuer à la variable 'auteur' la valeur du paramètre // 'auteur' fourni $this->auteur = $auteur; // Attribuer à la variable 'ISBN' la valeur du paramètre // 'ISBN' fourni $this->ISBN = $ISBN; } // Méthode pour récupérer le titre du livre public function getTitre() { // Renvoyer la valeur de la variable titre return $this->titre; } // Méthode pour définir le titre du livre public function setTitre($titre) { // Attribuer à la variable 'titre' la valeur du paramètre // 'titre' fourni $this->titre = $titre; } // Méthode pour récupérer l'auteur du livre public function getAuteur() { // Renvoyer la valeur de la variable auteur return $this->auteur; } // Méthode pour définir l'auteur du livre public function setAuteur($auteur) { // Attribuer à la variable 'auteur' la valeur du paramètre // 'auteur' fourni $this->auteur = $auteur; } // Méthode pour récupérer l'ISBN du livre public function getISBN() { // Renvoyer la valeur de la variable ISBN return $this->ISBN; } // Méthode pour définir l'ISBN du livre public function setISBN($ISBN) { // Attribuer à la variable 'ISBN' la valeur du paramètre // 'ISBN' fourni $this->ISBN = $ISBN; } // Méthode statique pour ajouter un livre à la collection de // livres public static function addLivre($livre) { // Ajouter l'objet livre fourni à la collection livres // Utilisation de self pour accéder à la variable statique self::$livres[] = $livre; } // Méthode statique pour supprimer un livre de la collection de // livres public static function removeLivre($livre) { // Supprime l'objet livre fourni de la collection livres foreach (self::$livres as $key => $value) { if ($value === $livre) { // Retire le livre de la collection unset(self::$livres[$key]); } } } // Méthode statique pour récupérer toute la collection de livres public static function getLivres() { // Retourner la liste de livres return self::$livres; } } // Créer une instance de la classe Livre avec titre "L'Étranger", auteur "Albert Camus", et ISBN "6547165001881" $livre1 = new Livre("L'Étranger", "Albert Camus", "6547165001881"); // Créer une autre instance de la classe Livre avec titre "Le père Goriot", auteur "Honoré de Balzac", et ISBN "661100321741" $livre2 = new Livre("Le père Goriot", "Honoré de Balzac", "661100321741"); // Ajouter livre1 à la collection de livres Livre::addLivre($livre1); // Ajouter livre2 à la collection de livres Livre::addLivre($livre2); // Récupérer la collection de livres et la stocker dans une variable nommée livres $livres = Livre::getLivres(); // Afficher un en-tête pour la liste des livres echo "Liste des livres:\n"; // Parcourir chaque livre de la collection livres foreach ($livres as $l) { // Affichez le titre, l'auteur et le numéro ISBN de chaque livre echo $l->getTitre() . " par " . $l->getAuteur() . ", ISBN: " . $l->getISBN() . "\n"; } // Supprimer le livre 1 de la collection de livres Livre::removeLivre($livre1); // Afficher un message indiquant que le livre 1 a été supprimé echo "\nAprès suppression de " . $livre1->getTitre() . ":\n"; // Afficher un en-tête pour la liste des livres mise à jour echo "Liste des livres mise à jour:\n"; // Récupérer la collection mise à jour de livres $livres = Livre::getLivres(); // Parcourir chaque livre de la collection livres mise à jour foreach ($livres as $l) { // Affichez le titre, l'auteur et le numéro ISBN de chaque livre echo $l->getTitre() . " par " . $l->getAuteur() . ", ISBN: " . $l->getISBN() . "\n"; } ?>
Sortie:
Liste des livres: L'Étranger par Albert Camus, ISBN: 6547165001881 Le père Goriot par Honoré de Balzac, ISBN: 661100321741 Après suppression de L'Étranger: Liste des livres mise à jour: Le père Goriot par Honoré de Balzac, ISBN: 661100321741
Exercice 4:
Écrire un programme PHP pour créer une classe appelée « Employee » avec un nom, un poste et un salaire, ainsi que des méthodes pour calculer et mettre à jour le salaire.
Diagrame de classe:

<?php // Définir la classe Employee class Employee { // Déclarer une variable privée pour stocker le nom de l'employé private $nom; // Déclarer une variable privée pour stocker le poste de l'emp. private $poste; // Déclarer une variable privée pour stocker le salaire de l'emp private $salaire; // Constructeur de la classe Employee qui initialise les // variables nom, poste et salaire public function __construct($nom, $poste, $salaire) { // Attribuer à la variable nom la valeur du paramètre nom $this->nom = $nom; // Attribuer à la variable poste la valeur du paramètre poste $this->poste = $poste; // Attribuer à la variable salaire la valeur du paramètre // salaire fourni $this->salaire = $salaire; } // Méthode pour récupérer le nom de l'employé public function getNom() { // Retourner la valeur de la variable nom return $this->nom; } // Méthode pour définir le nom de l'employé public function setNom($nom) { // Attribuer à la variable nom la valeur du paramètre nom $this->nom = $nom; } // Méthode pour récupérer le poste de l'employé public function getPoste() { // Retourner la valeur de la variable poste return $this->poste; } // Méthode pour définir le poste de l'employé public function setPoste($poste) { // Attribuer à la variable poste la valeur du paramètre poste $this->poste = $poste; } // Méthode pour récupérer le salaire de l'employé public function getSalaire() { // Retourner la valeur de la variable salaire return $this->salaire; } // Méthode pour définir le salaire de l'employé public function setSalaire($salaire) { // Attribuer à la variable salaire la valeur du paramètre // salaire fourni $this->salaire = $salaire; } // Méthode pour augmenter le salaire de l'employé d'un // pourcentage donné public function augSalaire($pourcentage) { // Calculer le nouveau salaire en augmentant le salaire // actuel du pourcentage donné. $this->salaire += $this->salaire * $pourcentage / 100; } // Méthode pour afficher les détails de l'employé public function afficherEmployee() { // Afficher le nom de l'employé echo "Nom: " . $this->nom . "\n"; // Afficher le poste de l'employé echo "Poste: " . $this->poste . "\n"; // Afficher le salaire de l'employé echo "Salaire: " . $this->salaire . "\n"; } } // Créer une instance de la classe Employee $e1 = new Employee("Alex Babtise", "Développeur", 80000); // Créer une autre instance de la classe Employee $e2 = new Employee("Emily Firoza", "Comptable", 70000); echo "\nDétails de l'employé:\n"; // Afficher les détails de e1 $e1->afficherEmployee(); // Afficher les détails de e2 $e2->afficherEmployee(); // Augmenter le salaire de e1 de 5% $e1->augSalaire(5); // Augmenter le salaire de e2 de 10% $e2->augSalaire(10); echo "\nAprès l'augmentation des salaires:\n"; echo "\n5% pour 'Alex Babtise':\n"; // Afficher les données mises à jour de e1 $e1->afficherEmployee(); echo "\n10% pour 'Emily Firoza':\n"; // Afficher les données mises à jour de e2 $e2->afficherEmployee(); ?>
Sortie:
Détails de l'employé: Nom: Alex Babtise Poste: Développeur Salaire: 80000.0 Nom: Emily Firoza Poste: Comptable Salaire: 70000.0 Après l'augmentation des salaires: 5% pour 'Alex Babtise': Nom: Alex Babtise Poste: Développeur Salaire: 84000.0 10% pour 'Emily Firoza': Nom: Emily Firoza Poste: Comptable Salaire: 77000.0
Exercice 5:
Écrivez un programme PHP pour créer une classe appelée « Banque » avec une collection de comptes et des méthodes pour ajouter et supprimer des comptes, et pour déposer et retirer de l’argent. Définissez également une classe appelée « Compte » pour gérer les détails du compte d’un client particulier.
Diagrame de classe:

<?php // Définir la classe Compte class Compte { // Déclarer une variable privée pour stocker le nom du titulaire // du compte private $nom; // Déclarer une variable privée pour stocker le numéro de compte private $numCompte; // Déclarer une variable privée pour stocker le solde du compte private $solde; // Constructeur de la classe Compte qui initialise les variables // nom, numéro de compte et solde public function __construct($nom, $numCompte, $solde) { // Attribuer à la variable nom la valeur du paramètre $nom $this->nom = $nom; // Attribuer à la variable numCompte la valeur du paramètre // $numCompte fourni $this->numCompte = $numCompte; // Attribuer à la variable solde la valeur du paramètre // $solde fourni $this->solde = $solde; } // Méthode pour récupérer le nom du titulaire du compte public function getNom() { // Retourner la valeur de la variable nom return $this->nom; } // Méthode pour définir le nom du titulaire du compte public function setNom($nom) { // Attribuer à la variable nom la valeur du paramètre nom $this->nom = $nom; } // Méthode pour récupérer le numéro de compte public function getNumCompte() { // Retourner la valeur de la variable numCompte return $this->numCompte; } // Méthode pour définir le numéro de compte public function setNumCompte($numCompte) { // Attribuer à la variable numCompte la valeur du paramètre // numCompte fourni $this->numCompte = $numCompte; } // Méthode pour récupérer le solde du compte public function getSolde() { // Retourner la valeur de la variable solde return $this->solde; } // Méthode pour définir le solde du compte public function setSolde($solde) { // Attribuer à la variable solde la valeur du paramètre solde $this->solde = $solde; } // Méthode de dépôt d'un montant sur le compte public function deposer($montant) { // Augmenter le solde du montant spécifié $this->solde += $montant; } // Méthode de retrait d'un montant du compte public function retirer($montant) { // Réduire le solde du montant spécifié $this->solde -= $montant; } // Méthode pour récupérer les informations sur le compte public function getCompteInfo() { // Renvoyer une chaîne contenant le nom, le numéro de compte // et le solde return "Nom: " . $this->nom . ", Numéro de compte: " . $this->numCompte . ", Solde: " . $this->solde; } } // Définir la classe Banque class Banque { // Déclarer une ArrayList pour stocker les comptes private $comptes; // Constructeur de la classe Banque public function __construct() { // Initialiser la liste de comptes $this->comptes = array(); } // Méthode pour ajouter un compte à la liste des comptes public function addCompte($compte) { // Ajouter le compte donné à la liste de comptes $this->comptes[] = $compte; } // Méthode pour supprimer un compte de la liste des comptes public function removeCompte($compte) { // Trouver l'index du compte à supprimer $index = array_search($compte, $this->comptes); if ($index !== false) { // Supprimer le compte donné de la liste de comptes unset($this->comptes[$index]); // Ré-indexer le tableau $this->comptes = array_values($this->comptes); } } // Méthode pour déposer de l'argent sur un compte spécifique public function deposerArgent($compte, $montant) { // Appeler la méthode de dépôt sur le compte donné avec le // montant spécifié $compte->deposer($montant); } // Méthode pour retirer de l'argent d'un compte spécifique public function retirerArgent($compte, $montant) { // Appeler la méthode de retrait sur le compte donné avec le // montant spécifié $compte->retirer($montant); } // Méthode pour obtenir la liste de tous les comptes public function getComptes() { // Retourner la liste des comptes return $this->comptes; } } // Créer un nouvel objet Banque $b = new Banque(); // Créer trois nouveaux objets Compte avec les détails initiaux $cpt1 = new Compte("Alex Babtise", "C101", 8000); $cpt2 = new Compte("Ali Koris", "C102", 6500); $cpt3 = new Compte("Bob Finor", "C103", 50000); // Ajouter les trois comptes au Banque b $b->addCompte($cpt1); $b->addCompte($cpt2); $b->addCompte($cpt3); // Récupérer la liste des comptes de la Banque b $comptes = $b->getComptes(); // Parcourir chaque compte de la liste des comptes foreach ($comptes as $cpt) { // Afficher les informations relatives à chaque compte echo $cpt->getCompteInfo() . "\n"; } // Afficher un message indiquant le début d'une opération de dépôt echo "\nAprès avoir déposé 500 dans cpt1:\n"; // Déposer 500 dans cpt1 $b->deposerArgent($cpt1, 500); // Afficher les informations de compte mises à jour pour cpt1 echo $cpt1->getCompteInfo() . "\n"; // Afficher un message indiquant qu'il n'y a pas de transaction pour cpt2 echo "Pas de transaction dans cpt2:\n"; // Afficher les informations relatives à cpt2 echo $cpt2->getCompteInfo() . "\n"; // Afficher un message indiquant le début d'une opération de retrait echo "Après avoir retiré 2000 de cpt3:\n"; // Retirer 2000 de cpt3 $b->retirerArgent($cpt3, 2000); // Afficher les informations de compte mises à jour pour cpt3 echo $cpt3->getCompteInfo() . "\n"; ?>
Sortie:
Nom: Alex Babtise, Numéro de compte: C101, Solde: 8000.0 Nom: Ali Koris, Numéro de compte: C102, Solde: 6500.0 Nom: Bob Finor, Numéro de compte: C103, Solde: 50000.0 Après avoir déposé 500 dans cpt1: Nom: Alex Babtise, Numéro de compte: C101, Solde: 8500.0 Pas de transaction dans cpt2: Nom: Ali Koris, Numéro de compte: C102, Solde: 6500.0 Après avoir retiré 2000 de cpt3 : Nom: Bob Finor, Numéro de compte: C103, Solde: 48000.0
Éditeur de code PHP: Testez votre code en ligne!
Exercices corrigés PHP – Programmation Orientée Objet | Partie 2
Exercices corrigés PHP – Programmation Orientée Objet | Partie 3
Exercices corrigés PHP – Programmation Orientée Objet | Partie 4
Exercices corrigés PHP – Programmation Orientée Objet | Partie 5
Exercices corrigés PHP – Programmation Orientée Objet | Partie 6

- Exercice PHP Corrigé – Partie 1
- Exercices corrigés PHP – Programmation Orientée Objet | Partie 1
- Exercices corrigés PHP – Programmation Orientée Objet | Partie 2
- Exercices corrigés PHP – Programmation Orientée Objet | Partie 3
- Exercices corrigés PHP – Programmation Orientée Objet | Partie 4
- Exercices corrigés PHP – Programmation Orientée Objet | Partie 5
- Exercices corrigés PHP – Programmation Orientée Objet | Partie 6