Les annotations
Notions théoriques
Les annotations sont des métadonnées que vous pouvez ajouter à votre code pour fournir des informations supplémentaires sur le comportement de votre code. En PHP, les annotations sont généralement ajoutées sous forme de commentaires docblock, qui sont des commentaires multi-lignes qui commencent par /**
et se terminent par */
.
PHP 8 a introduit un support natif pour les annotations (appelées attributs), mais avant PHP 8, les annotations étaient souvent utilisées dans le cadre de bibliothèques externes comme phpDocumentor ou Doctrine.
Les annotations PHPDoc sont une forme courante d'annotations en PHP. Elles sont utilisées pour documenter votre code, en indiquant le type des variables, des paramètres de fonction, des valeurs de retour, et en fournissant une description de ce que fait votre code.
Exemple pratique
Voici un exemple simple d'utilisation des annotations PHPDoc pour documenter notre classe Character
dans notre jeu de combat.
<?php
/**
* Classe représentant un personnage dans notre jeu de combat.
*/
class Character {
/**
* Le nom du personnage.
*
* @var string
*/
public $name;
/**
* Les points de vie du personnage.
*
* @var int
*/
public $hp;
/**
* La force d'attaque du personnage.
*
* @var int
*/
public $attack;
/**
* Crée un nouveau personnage.
*
* @param string $name Le nom du personnage.
* @param int $hp Les points de vie du personnage.
* @param int $attack La force d'attaque du personnage.
*/
public function __construct($name, $hp, $attack) {
$this->name = $name;
$this->hp = $hp;
$this->attack = $attack;
}
/**
* Vérifie si le personnage est vivant.
*
* @return bool True si le personnage est vivant, false sinon.
*/
public function isAlive() {
return $this->hp > 0;
}
}
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Dans ce TP, vous allez créer une nouvelle classe Fight
qui va gérer un combat entre deux personnages de notre jeu.
Vous allez utiliser les annotations PHPDoc pour documenter cette classe, ses propriétés et ses méthodes.
Voici la classe Character
que vous pouvez utiliser pour le TP :
<?php
class Character {
public string $name;
public int $hp;
public int $attack;
public function __construct(string $name, int $hp, int $attack) {
$this->name = $name;
$this->hp = $hp;
$this->attack = $attack;
}
public function isAlive(): bool {
return $this->hp > 0;
}
}
Consignes :
-
Créez une nouvelle classe
Fight
dans un nouveau fichierFight.php
. -
Ajoutez 2 propriétés à la classe
Fight
:character1
etcharacter2
. Ces propriétés représenteront les deux personnages qui vont se battre. -
Annoter ces 2 propriétés avec PHPDoc pour indiquer qu'elles sont de type
Character
. -
Créez une méthode
start()
qui va lancer le combat entre les deux personnages. Cette méthode doit retourner le personnage qui a gagné le combat.Ici, on suppose que le premier personnage gagne toujours, dans une vraie application, vous auriez une logique pour déterminer le vainqueur.
-
Annoter cette méthode avec PHPDoc pour indiquer qu'elle retourne un objet de type
Character
. -
Ajoutez une annotation
@package
CombatGame à votre classe pour indiquer qu'elle fait partie de notre jeu de combat. -
Ensuite, créez un fichier
testFight.php
pour tester votre classeFight
.- Incluez les fichiers
Character.php
etFight.php
dans le fichiertestFight.php
. - Créez deux nouveaux personnages.
- Créez un nouveau combat avec ces deux personnages.
- Lancez le combat et affichez le vainqueur.
<?php
require_once 'Character.php';
require_once 'Fight.php';
$character1 = new Character('Guerrier', 100, 20);
$character2 = new Character('Monstre', 80, 15);
$fight = new Fight($character1, $character2);
$winner = $fight->start();
print("Le vainqueur est : " . $winner->name); - Incluez les fichiers
Une solution
Vous devez être connecté pour voir le contenu.