POO Formation

Par Lounis Dev, il y a 8 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.
Lors de l'exercice de la mort bah j'ai fait ça :

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire

class Personnage { public $vie = 100; public $atk = 80; public $nom; public function regenerer() { $this->vie = 100; } public function __construct($nom) { $this->nom = $nom; } public function mort() { if ($vie <= 0) { return true; } else { return false; } } }

Ce que j'obtiens

Notice: Undefined variable: vie in C:\wamp64\www\poo\Personnage.php on line 22

J'ai bien essayer la correction et ça marche parfaitement mais je comprends pas pourquoi mon code n'a pas marcher et pourquoi on met un :

return $this->vie <=0;

Pourquoi on met l'instance $this ? C'est pas une nouvelle valeur car non ? Si la valeur est 0 bah y a ça mais à aucun moment on a une nouvelle instance

3 réponses

Carouge10, il y a 8 ans

Bonjour,
Il s'agit de la portabilité de ta variable.

Dans ta fonction mort(), $vie est une variable qui est seulement utilisable dans celle-ci.
$this->vie est la variable qui est valable dans toute ta classe.

C'est un peu plus suptile que cela mais tu devrais comprendre de cette façon

Lounis Dev, il y a 8 ans

Oui si j'résume la chose de l'erreur que j'ai eu :
Je ne peut pas savoir si vie est inférieur ou égal à 0 car je ne connais pas la valeur de $vie.
Avec $this->vie je pourrais avoir la valeur de $vie ?

Carouge10, il y a 8 ans

oui c'est ça