Come hai detto, i namespace sono un sistema per "raggruppare" oggetti in modo da evitare collisioni tra nomi.
Tutte le definizioni dopo la dichiarazione del namespace entreranno a far parte di quel namespace.
Codice PHP:
<?php
//file1.php
namespace ns\sns\ssns;
class prova{}
prova::someStaticFunc(); //Non serve specificare il namespace, visto che mi trovo già al suo interno
Puoi anche definire più namespace nello stesso file
Codice PHP:
<?php
//file2.php
namespace ns\sns\ssns;
class prova{}
prova::someStaticFunc(); //Non serve specificare il namespace, visto che mi trovo già al suo interno
namespace ns\sns\ssns1;
class prova1{}
Se voglio usare gli oggetti fuori dal namespace, devo specificare anche il ns
Codice PHP:
<?php
//file3.php
include 'file1.php';
\ns\sns\ssns\prova::someStaticFunc();
use serve per fare aliasing del ns
Codice PHP:
<?php
//file3.php
include 'file1.php';
use ns\sns\ssns as NS;
NS\prova::someStaticFunc();
Oppure
Codice PHP:
<?php
//file3.php
include 'file1.php';
use ns\sns\ssns; // che equivale a fare "use ns\sns\ssns as ssns"
ssns\prova::someStaticFunc();
Con use puoi anche importare un singolo oggetto:
Codice PHP:
<?php
//file3.php
include 'file1.php';
use ns\sns\ssns\prova; //importo la classe prova
$ist = new prova();
Queste sono le basi basi...fai riferimento al manuale di php per argomenti più avanzati