PHP Framework: Membuat Aplikasi dan Router

Membuat File Utama
Pertama kita akan membuat file bernama index.php, yang merupakan file utama dari framework kita. Mengecek apakah kode kita sudah bekerja dengan menuliskan:

PHP Built-in Server
Buka terminal untuk menjalankan PHP Built-in Server. Dalam hal ini, saya menggunakan terminal bawaan dari Ubuntu. Anda datat menggunakan terminal apapun. Namun, pastikan Anda dapat menjalankan perintah php secara global.

Dari terminal kita jalankan perintah: php -S localhost:8080

Sekarang PHP Built-in server telah berjalan. [Tue Dec 15 15:08:38 2020] PHP 7.4.13 Development Server (http://localhost:8080) started

Untuk mengakses localhost dengan port 8080 pada browser, dengan alamat: http://localhost:8080

Maka akan tampil sebagai berikut:

Menampilkan Pesan Error
Lalu selanjutnya kita akan menuliskan code untuk menampilkan error. Ke depannya kita bisa menghilangkan kode ini.

Membuat Route
Selanjutkan kita akan membuat variable untuk Application:

Lalu mememintahkan Application untuk menggunkan router:

Dan untuk menangani semuanya:

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

Membuat Folder Core
Selanjutnya kit membuat folder core. Folder ini berisi semua class inti dari framework kita. Nantinya kita akan membuat folder ini bisa di-install menggunakan Composer. Kita akan memcoba untuk membuat framework kita mirip dengan beberapa framework populer, seperti Symphony, Laravel, Yii, atau Code Igniter. Kita akan mebuat folder ini dapat di-install menggunakan Composer karena hanya mengelola dan membuat beberapa perubahan sehingga jika kita merubah folder core, orang lain folder core juga akan ter-update pada website mereka.

Membuat Class Application
Di dalam folder core, kita kan membuat class Application. Dalam class ini kita akan membuat constructor.

Di sini kita menggunakan fitur PHP 7.4, yaitu type properties. Kita buat variable $router yang bertipe Router:

Lalu di dalam constructor kita akan instansiasi class Router.

Dari langkah-langkah di atas maka isi dari class Application adalah sebagai berikut:
 * core/Application.php

Membuat Class Router
Selanjutnya, di dalam folder Core kita buat class Router.
 * core/Router.php

Sekarang, ketika kita membuka index.php, dan kita akan include class Application, dan kita telah bisa mengakses properti router. Kita bisa menggunakan fungsi require, require_once, atau include, terserah mana yang kita suka. Selanjutnya kita akan include class Application. Karena di dalam class Application kita instansiasi class Router, maka kita juga akan include class Router.

Namun, ketika framework kita semakin besar dan kita membuat banyak class, kita harus require semua class tersebut. Hal ini bukanlah cara yang baik dan mungkin tidak diperbolehkan di masa sekarang. Maka lebih baik kita membungkusnya menggunakan composer.