"Se ci sono due o più modi di fare una cosa,
e uno di questi modi può condurre a una catastrofe,
allora qualcuno la farà in quel modo.

(Edward Murphy)

Namespaces

Sab, 18/01/2014 - 02:18 -- arturu

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

Vedi Codice Su GitHub