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
Réponse acceptée

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

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 ?

oui c'est ça