2013-01-19 4 views
2

Je suis nouveau à simfony2, donc désolé pour la question de débutant.'DirectoryIterator' Classe non trouvée

Lorsque je tente d'utiliser certaines classes, comme DirectoryIterator ou DOMDocument je reçois l'exception suivante:

PHP Fatal error: Class 'My\TestBundle\Command\DirectoryIterator' not found in /var/www/simfony2/src/My/TestBundle/Command/TestCommand.php on line 214 

Si essayez d'exécuter le même code en dehors de l'environnement simfony2 code il fonctionne très bien, phpinfo() montre PHP Version => 5.3.10-1ubuntu3.4 et le chemin d'inclusion est la valeur par défaut ajoutée ZF2.

Encore une fois, je sais que c'est probablement un problème de configuration car il recherche la classe dans mon bundle plutôt que d'utiliser la classe PHP intégrée, mais je n'arrive pas à résoudre ce problème.

Edit: Ce est une copie du code que je suis en train d'exécuter:

protected function execute(InputInterface $input, OutputInterface $output) { 
$classes=get_declared_classes(); 
print_r($classes);  
$d= new DirectoryIterator("/"); 
} 

Quand je lance la commande, je peux voir la classe

... 
[73] => DirectoryIterator 
... 

Mais je ne peux pas utiliser

Répondre

7

Ceci est namespace associé!

N'a rien à voir avec symfony lui-même.
vous devriez ad \ avant une classe mondiale dans un autre espace de noms

$class = new \DirectoryIterator; 

Je vous suggère de lire le manuel PHP avant de continuer avec symfony!

+0

Merci. J'utilise php depuis un moment, mais je n'ai jamais utilisé d'espace de noms auparavant, plus le get_declared_classes() le shes sans la barre oblique. :) – SimSimY

+0

Ou utilisez l'opérateur 'use' ... – lonesomeday

+0

@SimSimY j'avoue, la façon dont les espaces de noms PHP intégrés est déroutant au premier abord et n'a pas beaucoup de sens. ;) – Gintro