PHP & POO : La Forge de Sabres et le Facteur Impérial Unique
Découvre les classes, les objets, le Singleton et les sessions comme si tu étais au château du Shogun !
La Classe et l'Objet : L'Atelier de Forge
Imagine que tu es le maître forgeron du Shogun. Avant de frapper l'acier incandescent, tu dessines un plan d'architecte très précis sur un rouleau de parchemin.
Ce plan décrit tout : la longueur de la lame, le matériau de la garde, et la technique pour trancher le bambou. Mais attention ! Tu ne peux pas te battre avec une feuille de papier : ce n'est qu'une définition.
En PHP, quand on écrit new Katana(), c'est comme crier : « Maître forgeron, utilise le plan Katana pour me fabriquer un nouvel exemplaire tout neuf ! ». Cette action s'appelle instancier un objet.
class Katana {
// 1. Les Propriétés (ce qu'il possède)
public $nom;
public $tranchant = 100;
// 2. Les Méthodes (ce qu'il sait faire)
public function attaquer() {
return "ZLAN ! Dégâts infligés !";
}
}
// On forge 2 sabres distincts :
$sabreOda = new Katana();
$sabreOda->nom = "ÉclairPourpre";
$sabreTakeda = new Katana();
$sabreTakeda->nom = "VentDuNord";
->
$monPersonnage->courir(), la flèche -> signifie : « Hé, prends cet objet précis, et demande-lui d'exécuter son action ! ». C'est l'équivalent de dire à ton chien : « Médor->donneLaPatte() » !
Le Design Pattern « Singleton » : Le Facteur Impérial Unique
Le problème de la pagaille au château
Dans OpenShogun, nous avons un service qui envoie des e-mails ou des notifications : MailService.
Imagine si chaque fois qu'un samouraï, un tavernier ou le cuisinier voulait envoyer une missive, on devait :
- Construire un nouveau bureau de poste en bois dans la cour...
- Acheter une nouvelle écurie et 10 nouveaux chevaux...
- Embaucher un nouveau facteur en chef...
Ce serait un gâchis gigantesque d'énergie et de mémoire pour notre serveur !
La Règle du Singleton
Le Singleton est une règle de programmation qui dit : « Pour ce service spécial, il n'existera JAMAIS qu'un seul et unique exemplaire dans tout le royaume informatique ! ».
$facteur = MailService::getInstance();
$facteur->envoyerMissive("Ennemi repéré !");
getInstance() te le prête aussitôt. S'il n'existe pas encore, il le crée une bonne fois pour toutes !
Les Sessions ($_SESSION) : Le Sceau de Cire sur la Main
As-tu remarqué que quand tu te connectes à OpenShogun avec ton mot de passe, tu n'as pas besoin de le retaper à chaque fois que tu cliques sur la Caserne, la Carte ou le Sénat ?
Pourtant, le protocole du Web (HTTP) a la mémoire d'un poisson rouge : dès qu'une page est affichée, il oublie complètement qui tu es !
PHPSESSID).
Quand tu te déplaces dans le château, les sentinelles regardent juste ton tampon : « Ah oui, c'est bien le Daimyo de la session n° 84920 ! Bienvenue dans votre armurerie monseigneur ! ».
Dans le code PHP du serveur :
$_SESSION['user_id'] = 42;
$_SESSION['pseudo'] = "Musashi";
$_SESSION['is_admin'] = true;
Auth::check() en regardant si le tiroir de session existe toujours !
Le Défi de Gabriel : Teste tes Connaissances !
2 QuestionsRéponds aux deux questions ci-dessous pour prouver que tu as bien assimilé la magie de la POO et du Singleton !