Pengenalan Slim Framework untuk Pemula
Slim Framework adalah mikro framework PHP untuk membuat aplikasi web. Biasanya digunakan untuk membuat REST API atau web service.
Pada kesempatan ini, kita akan belajar dasar-dasar penggunaan Slim Framework. Mulai dari tahap instalasi, sampai membuat route.
Catatan: Tutorial ini untuk Slim Versi 3
Baiklah, mari kita mulai…
Konsep Slim Framework
Slim Framework sebenarnya sangat sederhana. Dia hanya bertugas menerima HTTP Request, lalu memanggil fungsi yang diinginkan. Setelah itu mengembalikan HTTP Response.
Konsep #SlimFramework sangat sederhana... pic.twitter.com/mByBvFwmKg
— Petani Kode (@petanikode) July 10, 2017
Fungsi-fungsi yang akan dipanggil bisa ditulis langsung di dalam definisi route atau di dalam class khusus.
Apa bedanya mikro framework dengan framework yang lain?
Mikro framework memiliki fitur yang lebih sedikit dibandingkan dengan framework yang lain seperti CodeIgniter, Laravel, Yii, dan sebagainya.
Bisa dibilang, fiturnya kurang lengkap.
Namun bukan berarti tidak berguna.
Justru yang sia-sia itu, punya banyak fitur tapi tidak digunakan.
Pada Slim Framework kita bisa tentukan sendiri library yang akan digunakan. Bahkan juga bisa menggunakan komponen dari framework lain.
Contohnya: Menggunakan Elloquent milik Laravel untuk ORM.
Menyiapkan Project Slim Framework
Untuk membuat project Slim Framework, kita membutuhkan composer. Composer bertugas untuk manajemen library, menjalankan server, melakukan testing, dll.
Jadi, pastikan composer sudah terinstal di komputermu.
Silakan Baca: Cara Install dan Menggunakan Composer.
Setelah itu, ketik perintah berikut untuk membuat project slim:
composer create-project slim/slim-skeleton:3.1.8 aplikasi-slim -vvv
Keterangan:
aplikasi-slim
adalah nama direktori project yang akan dibuat.- argumen
-vvv
berfungsi untuk menampilkan detail proses instalasi.
Perintah di atas akan membuat direktori baru bernama aplikasi-slim
.
Isinya berupa file template dari slim-skeleton
.
Tunggu dulu?
Apa bedanya slim
dengan slim-skeleton
?
Jika kita ingin menggunakan Slim dari nol, kita bisa install dengan perintah ini:
composer require slim/slim
Tapi…
Kita akan membuat manual file-file yang dibutuhkan seperti:
index.php
router.php
middleware.php
- dll.
Nah, si slim-skeleton
ini adalah template project slim yang kita
bisa gunakan tanpa harus membuat file dari nol.
Kalau diartikan ke dalam bahasa indonesia skeleton artinya tualang punggung.
Jadi project yang kita buat merupakan project “tulang punggung” yang nanti bisa kita kembangkan ke skala yang lebih besar.
Menjalankan Server PHP
Silakan buka direktori aplikasi-slim
dengan teks editor.
Saya merekomendasikan
menggunakan VS Code.
Karena di sana terdapat build-in terminal yang bisa kita manfaatkan.
Setelah itu, buka terminal dengan menekan tombol Ctrl+`. Lalu ketik perintah berikut untuk menjalankan server.
composer start
Maka server akan berjalan di localhost pada port 8080
.
Setelah itu, coba buka http://localhost:8080, maka akan tampil seperti ini:
Selamat! 🎉
Mengenal Struktur Direktori Slim Framework
Sekarang coba perhatikan file-file yang ada di project aplikasi-slim
.
Ada beberapa file yang perlu kita ketahui:
composer.json
adalah file yang berisi keterangan tentang project, seperti library yang digunakan, deskripsi, lisensi, skrip, dll.composer.lock
berisi keterangan library dan versi yang digunakan. File ini yang menjadi acuan composer untuk menginstal library.CONTRIBUTING.md
berisi informasi bila kita ingin berkontribusi di proyekslim-skeleton
. File ini bisa kita hapus, karena tidak dibutuhkan dalam aplikasi.README.md
hampir sama sepertiCONTRIBUTING.md
. File ini berisi informasi cara penggunaanslim-skeleton
.phpunit.xml
berisi konfigurasi untuk PHPUnit. PHPUnit adalah framework untuk testing.docker-compose.yml
berisi konfigurasi Docker. Apabila kita ingin menjalankan server PHP melalui Docker, maka kita membutuhkan file ini.public/index.php
adalah file utama aplikasi. File ini yang akan diakses oleh user.public/.htaccess
adalah file konfigurasi server, biasanya digunakan untuk membuat pretty URL.- direktori
logs
berisi logs aplikasi. - direktori
vendor
berisi library-library yang dibutuhkan oleh aplikasi. - direktori
tests
berisi kode untuk melakukan testing. - direktori
src
berisi source code aplikasi. Di sinilah kita akan menulis kode. src/dependencies.php
berisi definisi dependencies yang dibutuhkan oleh aplikasisrc/middleware.php
berisi definisi middleware.src/routes.php
berisi definisi route aplikasi.src/settings.php
berisi konfigurasi aplikasi.- direktori
templates
adalah direktori tempat menaruh template.
Slim Instance
Setiap kita ingin membuat aplikasi dengan Slim Framework,
maka kita harus membuat instance atau objek dari class \Slim\App
.
Contoh:
<?php
require 'vendor/autoload.php';
$app = new \Slim\Slim();
Namun, pada slim-skeleton
kita tidak perlu melakukan ini.
Karena sudah dibuatkan di dalam index.php
.
Setelah membuat objek $app
, selanjutnya kita bisa tambahkan
route seperti ini:
<?php
require 'vendor/autoload.php';
$app = new \Slim\Slim();
// membuat route
$app->get("/hello/:nama", function($nama){
echo "Hello, $nama apa kabar?";
});
$app->run();
Pada slim-skeleton
route-nya sudah dibuat di file terpisah,
yaitu di file src/routes.php
.
Mengenal Route di Slim
Route adalah URL yang akan diakses oleh user.
Kita bisa membuat route di file src/routes.php
.
Contoh:
Mari kita coba buat route untuk halaman about. Buka file src/routes.php
,
lalu tambahkan kode berikut.
$app->get('/about/', function (Request $request, Response $response, array $args) {
// kirim pesan ke log
$this->logger->info("ada orang yang mengakses '/about/'");
// tampilkan pesan
echo "ini adalah halaman about!";
});
Router di atas hanya berfungsi untuk menulis pesan ke logs
dan menampilkan
pesan ke user dengan perintah echo
.
Coba buka http://localhost:8080/about/, Maka hasilnya akan seperti ini:
Lalu di file logs/app.log
akan ada seperti ini:
[2018-01-26 02:45:01] slim-app.INFO: ada orang yang mengakses '/about/' [] {"uid":"16805d6"}
[2018-01-26 02:45:01] slim-app.INFO: Slim-Skeleton '/' route [] {"uid":"b512533"}
Memahami Struktur Kode Route
secara sederhana, route bisa kita buat seperti ini:
$app->get('/about/', bukaHalamanAbout(Request $req, Response $res, array $args));
Artinya, saat aplikasi diakses dengan method GET
dengan route /about/
,
maka jalankan fungsi bukaHalamanAbout()
.
Parameter pada fungsi bukaHalamanAbout()
bersifat opsional.
- Parameter
$req
adalah objek dari classRequest
. Kita bisa mengambil banyak informasi dari objek ini, seperti data yang diinputkan melalui form. - Parameter
$res
adalah object dari classResponse
. Dengan objek ini, kita bisa memodifikasi respon yang akan diberikan kepada user. Misalnya, respon dalam bentuk JSON. - Parameter
$args
adalah sebuah array yang berisi argumen yang diberikan ke route.
Apa Selanjutnya?
Artikel ini hanya berisi pengenalan saja. Sebenarnya masih banyak yang harus kita bahas seperti:
- Route Group
- Middleware
- Dependencies
- Template
- dll.
Biar tidak terlalu panjan, saya akhiri saja artikel ini sampai di sini.
Referensi: Dokumentasi Slim