Sembra che tu stia usando bene, ma potresti non averne bisogno.
Namespacing consente di utilizzare nomi di funzioni e simboli senza preoccuparsi se una libreria di terze parti dichiara la stessa cosa (il che causerebbe un errore fatale in PHP). Puoi trarre conforto nel sapere che, dato che hai assegnato un nome a tutto, non c'è possibilità di collisione.
Ma se sei in una posizione in cui hai intenzione di conoscere e tenere conto di tutti i possibili simboli, non otterrai molto valore dai namespace. Modifica: e come G3D menziona nei commenti, il tuo caso d'uso specifico è coperto da Convenzioni per la denominazione di PEAR .
Tuttavia, fare affidamento sui prefissi potrebbe non funzionare come ci si aspetterebbe se si introducessero molte incognite.
Questo è disponibile in Drupal : supponiamo tu abbia creato un modulo denominato visualizzazioni . Bene, Drupal fornisce un sistema di aggancio, quindi puoi fare cose come implementare la funzione hook_foo()
sostituendo hook
con il nome del tuo modulo.
Quindi ora hai un'implementazione di un hook chiamato views_foo()
. Tutto va bene e va bene finché non hai bisogno di una funzione interna denominata views_foo()
.
Ma diciamo che c'è un nuovo modulo che estende il tuo modulo e si autodefinisce views_awesome . Se views_awesome
vuole implementare hook_foo()
, creerebbe una nuova funzione denominata views_awesome_foo()
.
Ah, ma non ti ho detto di un altro hook già definito: hook_awesome_foo()
. Quindi, senza namespacing, hai una collisione: views_awesome_foo()
può riferirsi all'implementazione di view_awesome
dell'implementazione di hook_foo
o views
di hook_awesome_foo()
.
In questo scenario, il namespace è davvero utile. Invece di aggiungere il prefisso alle implementazioni di hook, puoi fare:
\views\hook_foo()
\views_awesome\hook_foo()
ed evitare qualsiasi ambiguità.