2011-08-19 1 views
48

Sto implementando spazi dei nomi nel mio progetto esistente. Ho scoperto che puoi usare la parola chiave "usa" per importare le classi nel tuo spazio dei nomi. La mia domanda è, posso anche importare tutte le classi da 1 spazio dei nomi in un altro. Esempio:PHP come importare tutte le classi da un altro namespace

namespace foo 
{ 

    class bar 
    { 

     public static $a = 'foobar'; 

    } 

} 

namespace 
{ 
    use \foo; //This doesn't work! 
    echo bar::$a; 
} 

Aggiornamento per PHP 7+

Una nuova funzionalità di PHP 7 è raggruppato dichiarazioni. Questo non lo rende facile come usare 1 'istruzione use' per tutte le classi in un determinato spazio dei nomi, ma rende in qualche modo ...

codice

Esempio:

<?php 
// Pre PHP 7 code 
use some\namespace\ClassA; 
use some\namespace\ClassB; 
use some\namespace\ClassC as C; 

// PHP 7+ code 
use some\namespace\{ClassA, ClassB, ClassC as C}; 
?> 

Vedi anche: https://secure.php.net/manual/en/migration70.new-features.php#migration70.new-features.group-use-declarations

+1

mente che "Importa" non significa che si può effettivamente trovare quella classe. Hai ancora bisogno di avere quella classe disponibile attraverso un manuale o un caricatore automatico. – Nanne

+1

Naturalmente, ma non so come dirlo in altre parole. – Rob

+0

Ho pensato così, ma per evitare confusione :) – Nanne

risposta

53

Questo non è possibile in PHP.

Tutto quello che puoi fare è:

namespace Foo; 

use Bar; 

$obj = new Bar\SomeClassFromBar(); 
+7

Ok grazie, peccato ... – Rob

+2

Ovviamente, puoi mettere lezioni concrete nell'uso di clausole. ('usa Bar \ SomeClassFromBar; $ obj = new SomeClassFromBar();') –

+8

Oh no, perché PHP non fornisce questo ... –