2013-02-06 35 views
5

Come dice il titolo, quando ho istanziare una classe ottengo questo messaggio:fatale RecursiveIteratorIterator errore non trovato

Fatal error: Class 'Envato\RecursiveIteratorIterator' not found in C:\Users\rgr\Apache\htdocs\Roland Groza [ 3.0 ]\class\envato\envato.php on line 359 

È possibile visualizzare la classe qui: Class;

sto un'istanza da un altro file:

require("envato.php"); 
$test = new Envato\EnvatoAPIWrapper(); 
echo "User Vitals : ".$test->get_user_vitals("chaoscod3r")."<br>"; 

La classe viene avvolto con uno spazio dei nomi, in modo che possa avere qualcosa a che fare con esso, ma non ero sicuro dal momento che è stato pochi anni da quando Non ho programmato PHP. Speriamo che qualcuno ha un'idea che cosa è che sto facendo male :)

risposta

10

per accedere alle classi non-namespace come le classi interne di PHP e SPL all'interno di uno spazio dei nomi è necessario utilizzare il pieno nome classe qualificato come questo:

new \RecursiveIteratorIterator(); 

o importarlo esplicitamente all'inizio:

use \RecursiveIteratorIterator; 

e quindi utilizzarlo normalmente come si fa.

+0

Questo vale per tutti i miei metodi o solo per i metodi core PHP? – Roland

+1

Si applica a tutte le classi ** non classificate **, definite dall'utente o meno. Ma non per le funzioni, i nomi delle funzioni possono essere risolti in modo dinamico in quanto non sono soggetti all'autoloading. –

1

aggiungere una dichiarazione di utilizzo nella parte superiore del vostro spazio dei nomi ...

uso \RecursiveIteratorIterator;

Se non lo fai, allora PHP si aspetta RecursiveIteratorIterator di esistere all'interno del tuo spazio dei nomi corrente, piuttosto che nel namespace globale (indicato dal leader \)