Bonjour,
j'ai 2 classes Arme et Player à instancier et à afficher. Dans Arme il y a un id auto-incrémenté et et un tableau $armes en static.
Dans Player il y a un idArme qui le relie à Arme.
J'ai écris mes classes et mon index.php. Lors de l'affichage du player pas de soucis mais je n'arrive pas à afficher les infos de l'arme correspondante.
Dans index.php (ligne 28):
ça m'affiche le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $arme = Arme::recupererArme($player->getIdArme());
Fatal error: Uncaught Error: Call to a member function getIdArme() on null
Pourtant un var_dump demontre qu'il y a bien une valeur (
Code : Sélectionner tout - Visualiser dans une fenêtre à part $player->getIdArme()).
Code : Sélectionner tout - Visualiser dans une fenêtre à part index.php:33:int 1
Voici le code et merci pour votre aide :
classe Arme (pour alléger je n'ai pas mis les getters/setters) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 <?php class Arme { private static $compteur = 1; private $id; private $nom; private $degat; private static $armes = []; // Pour faire la liaison entre arme et player // Puis écrire une fonction qui récupère une arme en // fonction de l'id . public function __contruct($nom, $degat) { $this->setNom($nom); $this->setDegat($degat); $this->id = self::$compteur; self::$compteur++; self::$armes[] = $this; } public static function recupererArme($id) { foreach (self::$armes as $arme) { if ($arme->id === $id) { return $arme; } } }
Classe Player :
index.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php class Player{ private $nom; private $force; private $pv; private $idArme; public function __construct(){ $this->setForce(5); $this->setPv(100); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 <?php require 'Arme.php'; require 'Player.php'; $player1 = new Player(); $player1->setNom("Milo"); $player1->setIdArme(1); $player2 = new Player(); $player2->setNom("Tya"); $player2->setIdArme(2); $players = [$player1, $player2]; $arme1 = new Arme("Hache", 10); $arme2 = new Arme("Epée", 8); foreach ($players as $player) { echo "<br>"; echo "Nom :" . $player->getNom() . "<br>"; echo "Force :" . $player->getForce() . "<br>"; echo "PV :" . $player->getPV() . "<br>"; echo "Arme :<br>"; $arme = Arme::recupererArme($player->getIdArme()); var_dump($player->getIdArme()); echo "id :" . $arme->getId() . "<br>"; echo "Nom :" . $arme->getNom() . "<br>"; echo "Dégat :" . $arme->getDegat() . "<br>"; echo "----------------"; }
Partager