Ce face namespace / use
Un proiect mare (sau unul care folosește biblioteci instalate cu Composer) poate avea două clase Produs. Spațiile de nume (namespace) le despart: App\Modele\Produs și Magazin\Produs sunt clase diferite.
Declarația namespace trebuie să fie prima instrucțiune din fișier (după declare, dacă există). Cu use la începutul fișierului „imporți” un nume lung, ca să scrii apoi doar Produs. Cu as îi poți da un nume scurt diferit.
Din interiorul unui namespace, clasele incluse în PHP se scriu cu bară inversă în față: \DateTime, \Exception. Altfel PHP le caută în namespace-ul curent.
Exemple
Exemplul 1: Clasa și numele ei complet
<?php
namespace App\Modele;
class Produs
{
}
echo Produs::class . "\n";
echo get_class(new Produs()) . "\n";
echo __NAMESPACE__;
Rezultat
App\Modele\Produs
App\Modele\Produs
App\Modele
Exemplul 2: Import cu use și alias cu as
În mod normal, fiecare namespace stă în fișierul lui. Aici, ca exemplul să ruleze într-un singur fișier, folosim forma cu acolade.
<?php
namespace App\Modele {
class Produs
{
public function __construct(public string $nume)
{
}
}
}
namespace Magazin {
class Produs
{
}
}
namespace {
use App\Modele\Produs;
use Magazin\Produs as ProdusMagazin;
$p = new Produs("Laptop");
echo $p->nume . " este " . $p::class . "\n";
echo ProdusMagazin::class;
}
Rezultat
Laptop este App\Modele\Produs
Magazin\Produs
Exemplul 3: Clase din PHP într-un namespace
<?php
namespace App;
try {
throw new \RuntimeException("Eroare prinsă corect");
} catch (\RuntimeException $e) {
echo $e->getMessage() . "\n";
}
echo (new \DateTimeImmutable("2026-10-19"))->format("d.m.Y");
Rezultat
Eroare prinsă corect
19.10.2026
Greșeli frecvente
- Scrii cod sau HTML înainte de
namespace. Primești eroareaNamespace declaration statement has to be the very first statement. - Într-un namespace scrii
new DateTime()fără bară inversă. PHP cautăApp\DateTimeși dăClass not found. Scrie\DateTimesau adaugăuse DateTime;. - Crezi că
useîncarcă fișierul clasei. Nu încarcă nimic: doar scurtează numele. Fișierul trebuie inclus curequiresau printr-un autoloader (spl_autoload_register, Composer).
Comenzi înrudite
spl_autoload_register: Înregistrează o funcție care încarcă automat fișierul unei clase prima dată când clasa este folosită.class / new / $this: Definește o clasă: un șablon pentru obiecte care au date (proprietăți) și funcții proprii (metode).require / include: Încarcă și rulează codul dintr-un alt fișier PHP.