> For the complete documentation index, see [llms.txt](https://learn.devlabss.my.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.devlabss.my.id/laravel/bab-1-pengenalan-and-instalasi/1.1-konsep-framework-and-analogi-mvc.md).

# 1.1 Konsep Framework & Analogi MVC

## Konsep framework dan analogi MVC

Sebelum belajar sintaks Laravel, pahami dulu alasan framework dipakai.

Tanpa framework, kode PHP mudah bercampur dalam satu file. Logika, query, dan tampilan sering ditulis sekaligus. Kondisi ini membuat kode sulit dibaca, sulit dirawat, dan rawan error.

Framework membantu kita bekerja dengan struktur yang jelas. Laravel memberi aturan folder, alur kerja, dan banyak fitur bawaan agar pengembangan lebih cepat dan lebih aman.

### Target belajar BAB 1

Setelah menyelesaikan BAB 1, Anda diharapkan bisa:

* menjelaskan alasan memakai framework
* menjelaskan peran Model, View, dan Controller
* menyiapkan alat utama untuk belajar Laravel
* membuat proyek Laravel pertama dengan rapi
* membaca error dasar saat setup awal

### Mengapa tidak cukup PHP native

Saat aplikasi masih kecil, PHP native terasa sederhana.

Masalah mulai muncul ketika fitur bertambah. File makin banyak, logika makin rumit, dan tim makin sulit menjaga konsistensi.

Perbedaan umumnya seperti ini:

* **Struktur proyek:** PHP native cenderung bebas. Laravel sudah punya pola kerja yang rapi.
* **Keamanan:** di PHP native, banyak proteksi harus dibuat manual. Laravel sudah menyediakan dasar keamanan penting.
* **Kerja tim:** tanpa pola yang sama, tiap orang bisa menulis dengan gaya berbeda. Laravel membuat alurnya lebih seragam.
* **Kecepatan kerja:** fitur umum seperti routing, validasi, dan autentikasi lebih cepat dibuat di Laravel.

Intinya sederhana: **jangan membangun ulang hal dasar yang sudah tersedia dengan baik**.

### Apa itu Laravel

Laravel adalah framework PHP untuk membangun aplikasi web modern.

Laravel dirancang agar proses pengembangan lebih cepat, terstruktur, dan nyaman dipelajari. Framework ini juga sangat populer di industri, jadi cocok untuk dijadikan bekal kerja.

Dua tools penting di ekosistem Laravel adalah:

1. **Composer** — alat untuk mengelola package atau library.
2. **Artisan** — command line bawaan Laravel untuk membuat file dan menjalankan proses penting.

Contoh perintah Artisan:

```bash
php artisan make:model Buku
```

Perintah ini membantu membuat file lebih cepat daripada menulis semuanya dari nol.

### Memahami MVC

Laravel memakai pola **MVC** atau **Model-View-Controller**.

Tujuannya adalah memisahkan tugas tiap bagian aplikasi agar kode lebih bersih.

* **Model** menangani data.
* **View** menampilkan data.
* **Controller** mengatur alur di antara keduanya.

### Analogi MVC dengan restoran

Bayangkan aplikasi Laravel seperti restoran.

* **Controller** adalah **koki**.
  * Koki menerima pesanan.
  * Koki menentukan proses kerja.
  * Koki meminta bahan yang dibutuhkan.
* **Model** adalah **gudang atau kulkas**.
  * Tempat menyimpan bahan.
  * Bertugas mengambil atau menyimpan data.
  * Tidak menampilkan hasil ke pelanggan.
* **View** adalah **pelayan dan piring saji**.
  * Menyajikan hasil akhir ke pelanggan.
  * Fokus pada tampilan.
  * Tidak mengatur logika utama aplikasi.

Dengan analogi ini, Anda bisa mengingat perannya lebih mudah:

* pelanggan meminta sesuatu
* koki mengatur prosesnya
* gudang menyediakan bahan
* pelayan menyajikan hasil

### Alur kerja MVC di Laravel

Saat user membuka halaman, alurnya berjalan seperti ini:

{% stepper %}
{% step %}

### User mengirim request

User membuka URL, misalnya `/buku`.
{% endstep %}

{% step %}

### Route mencari tujuan

Laravel memeriksa file `routes/web.php` untuk menentukan handler yang tepat.
{% endstep %}

{% step %}

### Controller menjalankan logika

Controller menerima request lalu menentukan data apa yang dibutuhkan.
{% endstep %}

{% step %}

### Model mengambil data

Model berkomunikasi dengan database untuk mengambil atau menyimpan data.
{% endstep %}

{% step %}

### View menyiapkan tampilan

Data dikirim ke file Blade untuk disusun menjadi halaman HTML.
{% endstep %}

{% step %}

### Browser menerima response

Hasil akhir dikirim kembali ke browser dan ditampilkan ke user.
{% endstep %}
{% endstepper %}

Contoh sederhananya seperti ini:

```
Browser -> Route -> Controller -> Model -> Database
Browser <- View <- Controller <- Model <- Database
```

### Aturan penting dalam MVC

{% hint style="warning" %}
Jangan ambil data database langsung di View. Jangan tulis HTML di Model. Controller mengatur alur kerja antara data dan tampilan.
{% endhint %}

Jika tugas tiap bagian tercampur, kode akan cepat berantakan.

### Output yang harus terlihat

Setelah menyelesaikan BAB 1, hasil minimal yang seharusnya sudah ada:

* proyek Laravel berhasil dibuat dan dibuka
* halaman awal Laravel tampil di browser
* folder penting proyek sudah bisa dikenali
* alat utama seperti Laragon, Composer, dan VS Code sudah siap dipakai

### Poin evaluasi pemahaman

Pastikan Anda sudah memahami poin berikut sebelum lanjut:

* Saya paham perbedaan dasar antara PHP native dan framework.
* Saya mengerti mengapa framework membuat kerja lebih cepat dan lebih rapi.
* Saya tahu fungsi Composer dan Artisan.
* Saya bisa menjelaskan peran Model, View, dan Controller.
* Saya memahami alur request dari browser sampai kembali ke browser.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://learn.devlabss.my.id/laravel/bab-1-pengenalan-and-instalasi/1.1-konsep-framework-and-analogi-mvc.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
