2011-12-28 15 views
14

MySQLi works fine inside a class with no namespace and outside a class.Come utilizzare MySQLi all'interno di uno spazio dei nomi

Recentemente ho iniziato ad usare namespace e ora ho inciampato su un codice molto simile al seguente:

namespace Project; 

class ProjectClass{ 

     public static function ProjectClassFunction{ 
      $db = new mysql(data, data, data, data); 
     } 

} 

Tuttavia, riporta di nuovo a me con un messaggio

"Fatal error: Class 'Project\mysqli' not found"

La mia domanda è; Come posso usare mysqli all'interno di una classe che usa namespace?

risposta

30

Per impostazione predefinita, PHP proverà a caricare le classi dallo spazio dei nomi corrente. Fare riferimento alla classe nel namespace globale:

$db = new \mysqli(/* ... */); 

Questa è la stessa cosa che faresti quando ci si riferisce a una classe in un altro spazio dei nomi:

$foo = new \Some\Namespace\Foo(); 

Si noti che se si è interrotto all'inizio backslash, PHP proverebbe a caricare la classe relativa al tuo attuale spazio dei nomi. Il seguente codice cercherà nello spazio dei nomi Project\Some\Namespace per una classe denominata Foo:

namespace Project; 
$foo = new Some\Namespace\Foo(); 

In alternativa, è possibile importare in modo esplicito gli spazi dei nomi e risparmiare ambiguità:

namespace Project; 

use Mysqli; 

class ProjectClass 
{ 
    public static function ProjectClassFunction() 
    { 
     $db = new Mysqli(/* ... */); 
    } 
} 
+2

Per maggiori informazioni: http: //www.php .net/manual/it/language.namespaces.fallback.php – cmbuckley

+0

Grazie per l'illuminazione. –

Problemi correlati