L'instanciation de la classe par la chaîne à l'aide de PHP 5.3 espaces de noms
Je ne peux pas me résoudre un problème de l'instanciation d'une nouvelle classe en utilisant une variable de chaîne et PHP 5.3. les espaces de noms. Par exemple, cela fonctionne;
$class = 'Reflection';
$object = new $class();
Toutefois, cela ne veut pas;
$class = '\Application\Log\MyClass';
$object = new $class();
Une erreur irrécupérable s'est lancée en indiquant la classe ne peut pas être trouvé. Toutefois, il ne peut évidemment être instancié si à l'aide de la FQN c'est à dire;
$object = new \Application\Log\MyClass;
J'ai trouvé ceci pour être aparrent sur PHP 5.3.2-1, mais pas dans les versions ultérieures. Est-il une solution?
Vous devez vous connecter pour publier un commentaire.
Le départ
\
introduit un (pleinement qualifié) identificateur d'espace de noms, mais il ne fait pas partie du nom de la classe elle-même.$class = __NAMESPACE__ . '\MyClass';
pour les espaces de nomsUne autre façon d'obtenir le même résultat, mais avec une dynamique arguments est comme suit. Veuillez considérer la classe ci-dessous que le nom de la classe à instancier.
Et puis:
Si vous n'utilisez pas une version récente de PHP, veuillez utiliser le code suivant qui remplace la dernière ligne de l'exemple ci-dessus:
Le code produira la sortie suivante: