Namespace menghindari konflik nama class — seperti folder untuk kode.
Tanpa namespace:
// Masalah: dua class dengan nama sama!
class User {} // dari library A
class User {} // dari library B — ERROR!
Dengan namespace:
// App/Models/User.php
namespace App\Models;
class User {
public string $name;
}
// Vendor/Auth/User.php
namespace Vendor\Auth;
class User {
public string $token;
}
Menggunakan class dari namespace:
use App\Models\User;
use Vendor\Auth\User as AuthUser;
$user = new User(); // App\Models\User
$auth = new AuthUser(); // Vendor\Auth\User
PSR-4 Autoloading (Composer):
{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
Artinya: App\Models\User → file src/Models/User.php
Composer menangani autoloading otomatis — kamu tidak perlu require setiap file.