2015-12-02 1 views
3

J'ai un nom de classe enregistré dans une chaîne en PHP. Est-il possible de résoudre le nom de classe en utilisant une chaîne?Est-il possible de récupérer un nom de classe en utilisant son nom enregistré dans une chaîne en PHP?

Si en supposant que j'ai une classe appelée « Myclass », je besoin de quelque chose comme:

'Myclass'::class 
+0

Toutes les données de votre entrée ressembleront exactement à ceci? – vitozev

+0

Je ne comprends pas, quelle entrée? – naneri

+0

@naneri voulez-vous l'utiliser comme ceci '$ dynamic_name_of_the_class :: class'? –

Répondre

1

Je ne suis pas tout à fait clair quel usage vous auriez pour ::class contre une chaîne. Le simple fait est que, si cela a fonctionné, il produirait juste la même chaîne que vous avez déjà. Par exemple, dans votre exemple, 'MyClass'::class affichera la chaîne MyClass.

Peut-être que vous essayez d'avoir une chaîne qui contient juste le nom de classe et vous essayez de résoudre l'espace de noms? Cela ne marchera pas. Mais vous pouvez obtenir l'espace de noms actuel en utilisant le mot réservé __NAMESPACE__:

namespace foo\bar; 
echo __NAMESPACE__; //will output 'foo\bar' 

Vous pouvez utiliser en conjonction avec une chaîne de classname pour construire un classname entièrement qualifié pour l'espace de noms en cours.

Si vous souhaitez obtenir un nom de classe à partir d'un espace de nom différent, vous devez connaître l'espace de nom à l'avance; sans l'espace de noms, PHP ne sera pas capable de localiser la classe du tout.