Backend PHP (BPH) Help

Exercices classes abstraites

Exercice 0

  1. Créez un repository public avec un README sur GitHub, appelez-le coda-bph-j6

  2. Créez un dossier classes-abstraites dans le dossier coda-bph-j6

Exercice 1

Créez un dossier exercice-1.

Pour cet exercice, vous allez créer 4 fichiers :

  • AbstractUser.php

  • Admin.php

  • Member.php

  • index.php

AbstractUser.php

Dans le fichier AbstractUser.php, vous allez créer la classe abstraite AbstractUser.

Elle a pour attributs, tous protected:

  • id qui peut être null ou un int, et dont la valeur par défaut est null

  • username qui est une string qui n'a pas de valeur par défaut

  • password qui est une string qui n'a pas de valeur par défaut

  • role qui est une string qui n'a pas de valeur par défaut

Son constructeur prend tous les attributs en paramètres, sauf id.

Tous les attributs ont des getters et des setters public.

Member.php

Dans le fichier Member.php, vous allez créer la classe Member qui hérite de la classe AbstractUser.

Elle a pour attributs, tous private:

  • biography qui est une string et qui n'a pas de valeur par défaut

  • favorites qui est un tableau et dont la valeur par défaut est un tableau vide

Son constructeur prend tous les attributs en paramètres, sauf id et favorites. Son attribut role prend la valeur "MEMBER".

Tous les attributs ont des getters et des setters public.

Admin.php

Dans le fichier Admin.php, vous allez créer la classe Admin qui hérite de la classe AbstractUser.

Elle n'a pas d'attributs supplémentaires. Son attribut role prend la valeur "ADMIN".

Elle a une méthode publique supplémentaire :

  • public function changeMemberRole(Member $member) : void: cette méthode permet de modifier le rôle d'une instance de la classe Member reçue en paramètres. Si son role est MEMBER il devient PREMIUM_MEMBER sinon il devient MEMBER.

index.php

Dans votre fichier index.php, faites en sorte de tester vos classes :

  • Instanciez un Member et affichez toutes ses informations.

  • Instanciez un Admin et affichez toutes ses informations.

  • Faites en sorte que l' Admin change le role du Member et affichez les informations du Member

  • Faites en sorte que l' Admin change le role du Member une seconde fois et affichez les informations du Member

28 November 2025