Il concetto è molto semplice, una prima idea ce la siamo fatta con "Autoloader.php". Senza fare acrobazie filosofiche, molto praticamente, possiamo immaginare il namespace come un percorso, il percorso relativo alla cartella che contiene la classe. Attualmente dichiariamo e istanziamo le classi nel seguente modo:
<?php // dichiarazione di una classe dentro la cartella /app class NomeClasse { ... } // uso $obj = new NomeClasse; // dichiarazione di una classe dentro una cartella /app/cartella class Cartella_NomeClasse { ... } // uso $obj = new Cartella_NomeClasse; // dichiarazione di una classe dentro una cartella /app/cartella/cartella class Cartella_Cartella_NomeClasse { ... } // uso $obj = new Cartella_Cartella_NomeClasse; // eccetera
con l'uso dei namespaces diventerà
<?php // dichiarazione di una classe dentro la cartella /app class NomeClasse { ... } // uso $obj = new NomeClasse; // dichiarazione di una classe dentro una cartella /app/User namespace User; class NomeClasse { ... } // uso $obj = new User\NomeClasse; // dichiarazione di una classe dentro una cartella /app/User/Storage namespace User\Storage; class NomeClasse { ... } // uso $obj = new User\Storage\NomeClasse;
Questo modo di procedere ci permetterà di scrivere codice più pulito ed organizzato. Per poter usare i namespace dobbiamo fare una piccola modifica al file "/app/Autoloader.php", dobbiamo sostituire "_" con "\\" nella funzione di replace del percorso.
/app/Autoloader.php