J'apprends à utiliser les espaces de noms en php, et j'essaie de mettre une variable dans le nom de l'espace de nom lorsque j'appelle une constante. Voici mon code.appeler un espace de noms php avec une variable
fruits2.php
<?php
namespace fruits\red;
const redfruit = 'tomato';
fruits1.php
<?php
namespace fruits;
require_once('fruits2.php');
const myconst = 'banana';
echo myconst; // displays banana
echo '<br>';
echo \fruits\red\redfruit; // displays tomato
echo '<br>';
$color = 'red';
echo \fruits\$color\redfruit; // Parse error: syntax error, unexpected '$color' (T_VARIABLE), expecting identifier (T_STRING)
Je ne comprends pas comment je peux appeler la constante dans cette dernière ligne. J'ai essayé avec ce qui suit mais il est considéré comme une simple chaîne.
echo '\fruits\\'.$color.'\\redfruit';
Je suis assez sûr que je devrais être en mesure de le faire, parce que je pouvais faire quelque chose de très similaire lorsque vous appelez une classe dans une autre partie de ce code:
$name = '\fruits\basket\\'.$color.'\\eat';
$c = new $name(); //this works
Tout le monde connaît la réponse pour que? Merci!
vous ne pouvez pas parce que vous n'êtes pas autorisé à mettre des variables où vous voulez, comme 'class foo extends $ var {..}' qui ne fonctionnera pas non plus. Même chose avec 'public function $ var ($ a, $ b)' quelque chose que vous n'êtes pas censé faire, même PHP doit avoir des règles, Man! – ArtisticPhoenix