78 votes

Accéder à une constante de classe en utilisant une simple variable qui contient le nom de la constante.

Je tente d'accéder à une constante de classe dans l'une de mes classes :

const MY_CONST = "valeur";

Si j'ai une variable qui contient le nom de cette constante comme ceci :

$myVar = "MY_CONST";

Puis-je accéder d'une manière ou d'une autre à la valeur de MY_CONST ?

self::$myVar

Cela ne fonctionne pas évidemment car c'est pour les propriétés statiques. Aussi, les variables variables ne fonctionnent pas non plus.

0voto

hanshenrik Points 192

À mon avis, cette solution est légèrement meilleure que les existantes :

class C {
   public const WUT=5;
}
$v = "WUT";
var_dump(constant(C::class . "::$v"));
=> int(5)
  • La solution de mario s'en rapproche, mais ne fonctionne pas avec les espaces de noms, alors que ma solution fonctionne avec les espaces de noms : https://3v4l.org/SUYbi
  • pour self utilisez constant(self::class . "::$v");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X