Gli spazi dei nomi non sono solo per le classi di caricamento automatico. Inoltre impediscono i conflitti di denominazione. In effetti, questo è il loro scopo principale.
Supponi di avere un progetto che ha bisogno di una classe chiamata User
, per memorizzare informazioni sugli utenti della tua applicazione, ma un plugin usa anche una (diversa) classe chiamata User
per memorizzare informazioni. Gli spazi dei nomi ti consentono di creare la tua classe all'interno di uno spazio dei nomi (diciamo, MyApp
) e lascia che il plugin usi un altro spazio dei nomi (diciamo, CoolPlugin
). Il codice all'interno dello MyApp
spazio può semplicemente fare riferimento a User
(ad esempio, new User();
), così come il codice nello CoolPlugin
spazio; ognuno otterrà il risultato atteso. Quando è necessario utilizzare il codice da un altro spazio dei nomi, è sufficiente prefissarlo. Ad esempio, il codice nello CoolPlugin
spazio può accedere alla User
classe in MyApp
vianew \MyApp\User();
L'alternativa è che ogni classe ha bisogno di un nome complesso ovunque , come class MyApp_User
e class CoolPlugin_User
. Gli spazi dei nomi consentono di semplificare le cose la maggior parte delle volte ed evitare conflitti di denominazione in ogni momento.
Modifica: per rispondere alla domanda "C'è qualche differenza di prestazioni tra i due?"
Non significativo, no. Non l'ho confrontato, ma probabilmente c'è una differenza a livello di nanosecondi. Detto questo, sacrificare la qualità del codice per piccole prestazioni non è una buona strategia, quindi dovresti usare gli spazi dei nomi a prescindere. Per parametri di riferimento di tipi simili di problemi, consultare PHPbench.com e questa risposta StackOverflow .
Il tuo codice deve essere incredibilmente stretto e incredibilmente sensibile al tempo (pensa al trading ad alta frequenza o gestisci le reazioni nucleari) prima di doverti preoccupare di micro-ottimizzarlo in questo tipo di contesto. Se è veramente sensibile al tempo, dovresti probabilmente scrivere codice in c o persino assembly , non linguaggi interpretati come PHP.