PHP Namespace dan Autoloading PSR-4
Definisi
Namespace mengelompokkan kode agar nama kelas/trait tak bentrok (App\Http\Controller). use mengimpor; PSR-4 memetakan namespace ke struktur folder agar autoloading otomatis (via Composer). Tanpa PSR-4, kita harus require manual.
Kapan dipakai
Wajib untuk project modern (Laravel, Symfony). Hindari global namespace untuk kode reusable.
Cara kerja
namespace & use
namespace App\Http;
class Controller {}use App\Http\Controller;
new Controller();composer.json PSR-4
{ "autoload": { "psr-4": { "App\\": "src/" } } }composer dump-autoloadStruktur alur
Loading diagram...
Catatan implementasi
- PSR-4:
App\Http\X→src/Http/X.php. composer dump-autoloadsetelah ubah mapping.- FQCN:
\App\Http\Controllerdengan leading\untuk global. asuntuk alias bila bentrok:use A\X as Y.
Kesalahan umum
- Path tak match namespace: class not found; cek PSR-4.
- Lupa dump-autoload: mapping baru tak aktif.
- Bentrok nama tanpa namespace: pakai
use ... as. - Leading \ salah: FQCN butuh
\di awal.