PHP Framework: Mengaktifkan Autoloading Menggunakan Composer

Install Composer
Buka terminal kedua, jalankan perintah: php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
 * 1) Download installer

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
 * 1) Install Composer

php -r "unlink('composer-setup.php');"
 * 1) Hapus installer

composer
 * 1) Test installasi

Jika berhasil terpasang, akan muncul: ______ / ____/___  ____ ___  ____  ____  ________  _____ / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/                    /_/ Composer version 2.0.7 2020-11-13 17:31:06

Usage: command [options] [arguments]

Options: -h, --help                    Display this help message -q, --quiet                   Do not output any message -V, --version                 Display this application version --ansi                    Force ANSI output --no-ansi                 Disable ANSI output -n, --no-interaction          Do not ask any interactive question --profile                 Display timing and memory usage information --no-plugins              Whether to disable plugins. -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory. --no-cache                Prevent use of the cache -v|vv|vvv, --verbose          Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

...

Inisialisasi Composer
Pada terminal di dalam folder proyek kita jalankan: composer init Jika kita memiliki perintah composer yang tersedia secara global maka kita dapat menjalankannya.

Setelah itu, akan menghasilkan file composer.json. Dalam folder proyek kita terdapat file composer.json yang memuat deskripsi proyek kita seperti name, author, dan require berupa objek kosong yang nantinya akan berisi dependensi paket dari framework kita, seperti berikut:
 * composer.json

Menambah Autoloading
Sekarang kita akan mengkonfigurasi proterti autoload. Kita memilih PSR-4 untuk standar autoloading. Lalu kita menetapkan namespace app\\ untuk folder proyek kita. Ini berarti setiap class yang dibuat di dalam folder proyek, akan berada di bawah namespace app.


 * composer.json

Supaya autoloading dapat bekerja, serta untuk menghindari penulisan require yang berulang untuk setiap class, kita perlu mengkonfigurasi autoloading. Maka kita perlu mengubah namespace class Application dan Router.

Menambahkan Namespace
Karena setiap class yang ada di dalam direktori utama ada dalam namespace app. maka namespace harus sesuai dengan nama folder. Sehingga kita akan menambahkan namespace app\core untuk setiap class yang ada di dalam direktori core.


 * core/Application.php


 * core/Router.php

Update Composer
Untuk mengaktifkan autoloading, kita perlu meng-update composer. composer update

Perintah ini akan membaca autoload, mengerjakan sesuatu untuk kita, serta membuat folder vendor.

Setelah selesai, maka di dalam direktori vendor akan ada file autoload.php. vendor/ ├── autoload.php └── composer

Menyertakan Autoload
Kita buka file index.php. Untuk menyertakan autoload, kita hanya perlu require autoload. Maka, pada file index.php, tambahkan: Sekarang untuk setiap class yang namespace-nya telah sesuai, akan secara otomatis dimuat. Sehingga class Application ada di bawah namespace app\core. Dalam hal ini, karena index.php dan class Application berada di dalam namespace yang berbeda. Maka, untuk menggunakan class Application, kita menggunakan fungsi use sebagai berikut:

Dari langkah-langkah di atas, maka isi dari file index.php adalah sebagai berikut:
 * index.php