Ahmad Ma'ruf

Mengupas "Sihir" Laravel: Apa yang Sebenarnya Ia Selesaikan?

Saat memulai perjalanan di dunia web development, banyak dari kita langsung “melompat” menggunakan framework. Saya sendiri, setelah berkenalan dengan PHP, langsung menggunakan CodeIgniter 4, dan selama lebih dari dua tahun terakhir, saya mengandalkan Laravel secara profesional.

Laravel memang sebuah alat bantu yang luar biasa untuk mempercepat pengembangan. Namun, kemudahan ini sering kali membuat kita terlena. Jujur saja, saya jarang berpikir mendalam tentang apa yang sebenarnya terjadi di balik layar. Kita menerima begitu saja semua kemudahan yang diberikan oleh framework.

Untuk menjawab rasa penasaran itu, saya melakukan sebuah eksperimen sederhana: membuat dua aplikasi CRUD yang identik.

Keduanya adalah aplikasi manajemen buku sederhana yang menggunakan SQLite dan menerapkan arsitektur MVC, dengan tampilan menggunakan 98.css.

Tujuannya jelas:

Memahami konsep MVC secara lebih dalam dan melihat secara konkret apa saja masalah-masalah teknis yang sebenarnya diselesaikan oleh Laravel.

Mengapa Eksperimen Ini Penting?

Framework memang menyederhanakan banyak hal. Namun, kemudahan itu sering kali menjadi pedang bermata dua. Kita jadi lupa alur pemrosesan request, tidak lagi paham lifecycle aplikasi, dan membiarkan semuanya berjalan secara magis.

Dengan membangun versi native, saya dipaksa untuk:

Hasilnya, pemahaman saya tentang cara kerja aplikasi web menjadi jauh lebih jernih. Mari kita bedah satu per satu.

1. Routing: Dari Query String ke Resource Controller

PHP Native
Di sini, routing adalah pekerjaan manual. Saya menggunakan query string untuk menentukan halaman mana yang harus ditampilkan.

1// URL: ?c=book&a=show&id=3

Sebuah front controller (public/index.php) bertugas membaca parameter c (untuk controller) dan a (untuk action), lalu memuat file dan memanggil method yang sesuai. Semua proses terlihat jelas, tetapi juga repetitif dan rentan kesalahan.

Laravel
Cukup dengan satu baris elegan di routes/web.php:

1Route::resource('books', BookController::class);

Laravel secara otomatis menangani semuanya: dari mem-parsing URI, mencocokkan route dengan method HTTP (GET, POST, PUT, DELETE), hingga validasi parameter.

Apa yang Diselesaikan Laravel?

2. Controller: Dari Manual Load ke Dependency Injection

PHP Native
Setiap controller harus saya require secara manual. Instansiasi objek juga dilakukan sendiri, lalu method-nya dipanggil langsung.

1$controller = new BookController();
2$controller->show(3);

Laravel
Berkat autoloader Composer dan service container-nya, Laravel menangani seluruh lifecycle objek. Dependency seperti request object atau service class lain dapat di-inject secara otomatis ke dalam method.

Apa yang Diselesaikan Laravel?

3. Data Layer: Dari PDO Manual ke Eloquent ORM

PHP Native
Saya harus membuat koneksi PDO, menulis query SQL secara manual, dan mapping hasilnya ke dalam array atau objek secara manual. Proses ini panjang dan rawan SQL injection jika tidak ditangani dengan hati-hati.

Laravel
Dengan Eloquent ORM, operasi database menjadi jauh lebih sederhana dan ekspresif.

1$books = Book::all();
2$book = Book::find(1);

Apa yang Diselesaikan Laravel?

4. View Rendering: Dari include() ke Blade Engine

PHP Native
Menampilkan view dilakukan dengan include file PHP biasa. Data harus dikirim secara manual, dan logika untuk layout templating harus dibuat sendiri. Proses escaping output untuk mencegah XSS juga menjadi tanggung jawab developer sepenuhnya.

Laravel
Blade, template engine bawaan Laravel, menyediakan sintaks yang bersih dan fitur-fitur canggih seperti layout inheritance, component system, dan automatic output escaping.

@extends('layouts.app')

@section('content')
    <h1>{{ $book->title }}</h1>
@endsection

Apa yang Diselesaikan Laravel?

5. Database Migration: Dari Script PHP ke Versioning

PHP Native
Perubahan skema database dikelola dengan script PHP atau SQL manual. Tidak ada sistem versioning, sehingga kolaborasi tim dan proses rollback menjadi sangat sulit.

Laravel
Cukup satu perintah di terminal:

1php artisan migrate

Apa yang Diselesaikan Laravel?

Refleksi Akhir

Eksperimen ini membuka mata saya bahwa Laravel bukan sekadar “framework untuk kerja cepat”. Ia adalah hasil dari riset dan implementasi solusi untuk masalah-masalah engineering yang nyata dan kompleks.

Namun, ada satu pelajaran penting lainnya: tanpa memahami fundamental, kita hanya akan menjadi pengguna alat, bukan seorang pengrajin yang menguasainya.

Laravel tidak menggantikan pemahaman dasar tentang HTTP, MVC, atau OOP. Sebaliknya, pemahaman dasar itulah yang membuat kita bisa menggunakan Laravel—dan framework lainnya—dengan lebih bijak, efisien, dan kreatif.

Eksperimen kecil ini telah mempertajam pemahaman saya tentang lifecycle request, memberi saya kepercayaan diri lebih saat melakukan debugging, dan membuat saya lebih menghargai setiap keputusan desain di balik Laravel.


Repository

Bagi Anda yang tertarik untuk melihat perbandingannya secara langsung, berikut adalah repository dari kedua aplikasi:

#php #laravel #framework #konsep

← Kembali ke Catatan

Balas unggahan ini melalui email ↪