Namespace & Autoloading — PHP

Namespace menghindari konflik nama class — seperti folder untuk kode. Tanpa namespace: // Masalah: dua class dengan nama sama! class User {} // dari library A c

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.

Yang akan kamu pelajari