2012-05-15 4 views
7

Sto cercando di trovare un modo per applicare questi spazi dei nomi, poiché sarebbe scomodo scrivere. So che posso semplicemente fare, usare jream\ as j ma vorrei vedere se è possibile evitare il backslash.C'è una scorciatoia per lo spazio dei nomi PHP per questo?

require '../jream/Autoload.php'; 

use jream\Autoload as Autoload, 
    jream\Database as Database, 
    jream\Exception as Exception, 
    jream\Form as Form, 
    jream\Hash as Hash, 
    jream\Output as Output, 
    jream\Registry as Registry, 
    jream\Session as Session; 

new Autoload('../jream'); 

non c'è un modo di dire qualcosa in questo senso: jream\\* as *;?

Eventuali suggerimenti sarebbe apprezzato :)

risposta

6

Per lo meno si può saltare tutto il ridondante as aliasing:

use jream\Autoload, 
    jream\Database, 
    jream\Exception, 
    jream\Form, 
    jream\Hash, 
    jream\Output, 
    jream\Registry, 
    jream\Session; 

Se si desidera utilizzare tutto lo spazio dei nomi senza digitare fuori uno per uno, allora davvero l'unica vera scelta è quella di alias dello spazio dei nomi nel suo insieme e utilizzare una barra rovesciata:

use jream as j; 

new j\Autoload; 
+0

Grazie, questo è probabilmente il modo migliore per farlo. – JREAM

3

Non c'è un modo per dire qualcosa in questo modo: jream \ * as *; ?

No, ma si può fare questo:

// use-jream.php 
class Autoload extends jream\Autoload {} 
class Database extends jream\Database {} 
... 

// index.php 
require_once 'use-jream.php' 

new Autoload('../jream'); 

ma io non lo consiglio davvero a farlo.

E, naturalmente, se si vuole cambiare solo lo spazio dei nomi di default:

namespace jream; 

new Autoload('../jream'); 

Questo è tutto un import jream.* potrebbe mai significare in PHP, dal momento che PHP non ha assolutamente alcun modo per determinare se una classe potrebbe esistere in un determinato spazio dei nomi a meno che non lo informi.

+0

Hey, grazie per la risposta, mi piace l'ultima parte sull'impostazione di un namespace! – JREAM

Problemi correlati