8768 sujets

Développement web côté serveur, CMS

Bonjour
Je n'arrive plus à m'y retrouver dans l'utilisation des constantes de classe.
Si j'écris

class toto {
  const xxx = "abc";
  function __construct($data) {
    $yyy = self::xxx;
    var_dump($yyy);
  }
}
class titi extends toto {
  const xxx = "def";
}

$test = new titi('yyz');

il affiche string(3) "abc"
Quelle est la syntaxe permettant de surcharge une constante de classe?
Merci de remettre mes neurones en place...
Modifié par PapyJP (13 Feb 2019 - 13:36)
Modérateur
Bonjour,

class toto {
  const xxx = "abc";
  function __construct($data) {
    $yyy = get_called_class()::xxx;
    var_dump($yyy);
  }
}
class titi extends toto {
  const xxx = "def";
}

$test = new titi('yyz');

Amicalement,
Salut

Dans le cas où tu connais déjà ta classe parente :

get_called_class()::xxx;

devient :
titi::xxx;
Merci de ces infos, je teste ça demain.
Pour le moment j’ai mis une propriété var $xxx = "def" au lieu d’une constante, mais c’est un workaround dont j’aimerais me passer
Modifié par PapyJP (13 Feb 2019 - 20:03)