Hari 14: Namespace & Autoload
60 min
Last updated 09 Apr 2026
Namespace — Menghindari Konflik Nama
// File: app/Models/User.php
namespace App\Models;
class User {
public function __construct(public string $nama) {}
public function info(): string { return "User: {$this->nama}"; }
}
// File: app/Services/UserService.php
namespace App\Services;
use App\Models\User; // import class
class UserService {
public function buat(string $nama): User {
return new User($nama);
}
public function sapa(User $user): string {
return "Halo, {$user->nama}!";
}
}
Alias Namespace
use App\Models\User as UserModel;
use App\Services\UserService as Service;
$service = new Service();
$user = $service->buat("Budi");
echo $service->sapa($user); // Halo, Budi!
Composer & PSR-4 Autoload
Composer adalah dependency manager PHP. Dengan PSR-4, class otomatis di-load sesuai namespace.
// composer.json
{
"autoload": {
"psr-4": {
"App\": "app/"
}
}
}
// Setelah composer dump-autoload, semua class di App\ tersedia otomatis!
💡
Notice: Di satu file, namespace hanya berlaku di bawah deklarasinya. Proyek nyata pakai composer untuk autoload.
Assignment
Simulasi namespace: definisikan class App\Http\Response dengan constructor($status, $body) dan method send() yang echo "HTTP $status: $body". Gunakan namespace dan gunakan alias. Buat instance dan panggil send().
Expected output:
HTTP 200: OK - Data berhasil dimuat
PHP
index.php
Solution
Output