LaravelPHPKonsepPemula4 mnt baca

Laravel vs PHP Murni: Kapan Pakai Framework

Bandingkan PHP murni dengan Laravel: apa yang dihemat, apa yang dikorbankan.

Analogi: Pisau Dapur vs Food Processor

PHP murni itu seperti pisau dapur yang tajam. Untuk mengiris satu bawang, pisau lebih cepat daripada mengeluarkan food processor, mencuci semua bagiannya, lalu merakitnya kembali. Tapi kalau kamu harus mengiris 200 bawang setiap hari untuk katering, food processor menghemat waktumu berkali-kali lipat.

Laravel adalah food processor-nya. Ada biaya di awal (belajar, waktu boot, memori), tapi untuk pekerjaan berulang dalam skala besar, ia jauh lebih efisien. Kuncinya: pilih alat sesuai ukuran pekerjaan.

Kenapa Perbandingan Ini Penting?

Banyak pemula terjebak di dua ekstrem. Ekstrem pertama: memakai Laravel untuk semua hal, termasuk halaman "segera hadir" satu file, lalu heran kenapa loading-nya terasa berat. Ekstrem kedua: menolak framework karena "PHP murni lebih cepat", lalu menghabiskan tiga minggu menulis ulang sistem login, validasi, dan routing yang sudah ada gratis di Laravel.

Masalah sebenarnya yang perlu dipahami: framework menukar sedikit overhead dengan banyak kecepatan development dan keamanan bawaan. Kamu perlu tahu persis apa yang kamu hemat dan apa yang kamu korbankan supaya keputusanmu sadar, bukan ikut-ikutan.

Contoh 1: Menampilkan Satu Artikel, Dua Cara

PHP murni, semua ditulis manual:

php
// public/artikel.php (PHP murni)
<?php
$conn = new PDO('mysql:host=localhost;dbname=blog', 'root', '');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $conn->prepare('SELECT * FROM posts WHERE id = ?');
$stmt->execute([$_GET['id']]);
$post = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$post) {
    http_response_code(404);
    echo 'Artikel tidak ditemukan';
    exit;
}
?>
<h1><?= htmlspecialchars($post['title']) ?></h1>
<p><?= htmlspecialchars($post['body']) ?></p>

Versi Laravel, jauh lebih ringkas:

php
// routes/web.php (Laravel 11)
use App\Models\Post;
use Illuminate\Support\Facades\Route;

Route::get('/artikel/{post}', function (Post $post) {
    return view('artikel.show', ['post' => $post]);
});
blade
{{-- resources/views/artikel/show.blade.php --}}
<h1>{{ $post->title }}</h1>
<p>{{ $post->body }}</p>

Perhatikan apa yang hilang di versi Laravel: koneksi database manual, prepared statement manual, pengecekan 404 manual, dan htmlspecialchars manual. Semua ditangani framework: route model binding melempar 404 otomatis, dan {{ }} meng-escape output otomatis.

Contoh 2: Validasi Form, Jurang Paling Terasa

PHP murni, validasi form pendaftaran ditulis tangan, panjang dan rawan lupa:

php
// public/daftar.php (PHP murni, versi singkat)
$errors = [];
if (empty($_POST['nama'])) $errors[] = 'Nama wajib diisi';
if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) $errors[] = 'Email tidak valid';
if (strlen($_POST['password']) < 8) $errors[] = 'Password minimal 8 karakter';
// ... cek email duplikat ke database, hash password, simpan, dst.

Versi Laravel:

php
// app/Http/Controllers/AuthController.php
public function register(Request $request)
{
    $data = $request->validate([
        'nama' => 'required|string|max:255',
        'email' => 'required|email|unique:users',
        'password' => 'required|min:8|confirmed',
    ]);

    $data['password'] = Hash::make($data['password']);
    User::create($data);

    return redirect('/dashboard');
}

Satu method, validasi lengkap termasuk cek email duplikat di database (unique:users). Kalau validasi gagal, Laravel otomatis mengembalikan user ke form dengan pesan error, tanpa kamu menulis redirect manual.

Kesalahan Umum Pemula

Salah: memakai Laravel untuk skrip sekali pakai yang sebenarnya cukup satu file PHP.

php
// SALAH: install Laravel lengkap hanya untuk menampilkan jam server
// routes/web.php
Route::get('/jam', fn() => now()->format('H:i:s'));
// ... padahal cukup satu file jam.php berisi: <?= date('H:i:s') ?>
php
// BENAR: PHP murni untuk hal sepele satu file
// public/jam.php
<?= date('H:i:s') ?>

Salah: menolak Laravel dengan alasan performa untuk aplikasi yang butuh login dan database.

php
// SALAH: pola pikir "framework itu lambat" lalu menulis ini di setiap project:
// - koneksi PDO manual, session manual, hash password manual,
// - router buatan sendiri yang bug saat URL mengandung karakter aneh,
// - lupa htmlspecialchars di satu template, jadilah celah XSS.
php
// BENAR: sadar trade-off. Butuh login + database + validasi = pakai Laravel.
// Overhead boot puluhan milidetik tidak terasa oleh user,
// tapi celah keamanan dari kode tulisan tangan sangat terasa saat dibobol.

Catatan teknis: Aturan praktisnya sederhana. Kalau project butuh login user, database relasional, atau API, langsung pakai Laravel. Kalau cuma satu file form kontak atau halaman statis, PHP murni lebih ringan. Yang berbahaya bukan pilihan alatnya, tapi memakai gergaji mesin untuk memotong kertas, atau memakai gunting kertas untuk menebang pohon.

Rangkuman

PHP murni memberi kontrol penuh dan nol overhead, cocok untuk pekerjaan kecil. Laravel menukar sedikit overhead dengan kecepatan development dan keamanan bawaan, cocok untuk aplikasi sungguhan. Programmer yang dewasa bukan yang fanatik satu alat, tapi yang tahu kapan memakai yang mana.

Tantangan

Bandingkan Kode

Tulis pseudocode (boleh bahasa Indonesia) alur login user dalam PHP murni: minimal 6 langkah. Lalu tulis ulang dalam 3 langkah versi Laravel (route, controller, Auth). Rasakan perbedaannya.