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