web-dev-qa-db-fra.com

PHP Accès à la propriété statique non déclarée

J'ai créé une classe en PHP et j'obtiens une erreur fatale (titre) sur la ligne marquée d'un astérisque (*)

class monster{
    private $id = 0;
    private $name = "";
    private $baseLevel = 0;
    private $attack = 0;
    private $defense = 0;
    private $baseEXP = 0;
    private $dropType = 0;
    private $dropNum = 0;
    function __construct($a, $b, $c, $d, $e, $f, $g, $h){
    *   self::$id=$a;
        self::$name = $b;
        self::$baseLevel = $c;
        self::$attack = $d;
        self::$defense = $e;
        self::$baseEXP = $f;
        self::$dropType = $g;
        self::$dropNum = $h;
    }
}

Je ne peux pas comprendre ce qui en est la cause, la classe suivante (même fichier) renvoie la même erreur.

class item{
    private $id = 0;
    private $name = "";
    private $type = 0; #0-weapon, 1-armor, 2-charm, 3-ability
    private $ability = 0;
    private $desc = "";
    private $cost = 0;
    function __construct($a, $b, $c, $d, $e, $f){
        self::$id=$a;
        self::$name=$b;
        self::$type=$c;
        self::$ability=$d;
        self::$desc=$e;
        self::$cost = $f;
    }
}

Savez-vous par hasard ce qui cause l'erreur ou comment je peux la corriger?

11
Yaakov Schectman

Vous devez déclarer vos propriétés avec un mot clé statique, par exemple.

static private $id = 0;
19
Dmitri Kadykov

Utilisation $this-> au lieu de self::

Self est pour les membres statiques et $this est par exemple des variables.

9
Ryan Printup