Bab 0 — Kenalan dengan Proyek: Aplikasi Data Siswa Les
0.1Apa yang akan kita bangun?
Kita membangun aplikasi pencatat siswa untuk tempat les bernama Cerdas Mandiri, memakai bahasa PHP dan framework Laravel. Aplikasi berjalan di browser. Pengelola les cukup membuka alamat web, lalu mencatat murid.
Permintaan dari kliennya, Bu Rina:
Baca ulang permintaan itu dengan teliti. Pekerjaan programmer yang sebenarnya adalah menerjemahkan kalimat orang biasa menjadi fitur. Coba tandai: kalimat mana yang menjadi fitur tambah, lihat, ubah, hapus, dan kalimat mana yang menjadi aturan validasi?
Pada akhir tutorial, aplikasimu bisa:
| Fitur | Yang bisa dilakukan |
|---|---|
| Daftar | Melihat semua siswa, yang terbaru di baris atas. Kalau kosong, muncul tulisan "Belum ada data siswa." |
| Tambah | Mengisi formulir nama, program les, dan nomor HP orang tua. Isian kosong ditolak, dan pesan sukses muncul setelah tersimpan. |
| Ubah | Membuka data lama dalam formulir, mengubahnya, lalu menyimpan tanpa membuat siswa kembar. |
| Hapus | Menghapus siswa setelah konfirmasi, hanya siswa yang dipilih. |
0.2Mengapa proyek kecil ini bagus untuk belajar?
Hanya tiga kolom data, tetapi di dalamnya ada hampir semua dasar pemrograman web:
- CRUD — Create, Read, Update, Delete, empat operasi dasar hampir semua aplikasi data.
- MVC — pembagian tugas antara Route, Controller, Model, dan View.
- Migration — tabel database dibuat lewat kode, bukan klik-klik.
- Validasi — aturan data yang benar, dan yang terpenting: di mana aturan itu harus dijaga.
- Seeder — mengisi data contoh yang aman diulang.
- Pengujian otomatis — 35 test yang memeriksa pekerjaanmu sendiri.
0.3Peta teknologi
| Teknologi | Fungsi singkat |
|---|---|
| Laravel | Kerangka web PHP: menerima permintaan (request) dan mengirim jawaban (response). |
| Artisan | Perintah php artisan ... yang membuatkan berkas dan menjalankan tugas. |
| Eloquent | Cara menulis tabel database sebagai kelas PHP (disebut Model) tanpa SQL manual. |
| Blade | Berkas HTML yang bisa disisipi data PHP ({{ $nama }}). |
| SQLite | Database berupa satu berkas. Tidak perlu install server database. |
| Composer | Pengelola paket PHP (seperti npm di dunia JavaScript). |
| PHPUnit | Menjalankan test otomatis lewat php artisan test. |
0.4Cara belajar: bangun dari nol, bab demi bab
Kamu mulai dari proyek Laravel kosong. Setiap bab menambah satu bagian, di akhir setiap bab aplikasi bisa dijalankan, dan ada test otomatis yang membuktikan bagianmu benar.
Apa yang sudah disediakan pengajar? (Paket Starter)
Kita fokus belajar logika PHP di sisi server. Karena itu pengajar membagikan Paket Starter berisi:
| Isi Paket Starter | Keterangan |
|---|---|
resources/views/ |
Semua tampilan Blade (layout, daftar, tambah, ubah). Kamu tidak mengetik HTML panjang. Kamu belajar mengirim data ke tampilan dan membaca tampilan itu. |
tests/Feature/ |
35 test otomatis, dipakai memeriksa pekerjaanmu di akhir tiap bab. |
Semua kode PHP (migration, model, seeder, route, controller) kamu ketik sendiri.
Aturan main
- Ketik, jangan hanya salin-tempel. Mengetik membuatmu memperhatikan setiap baris.
- Baca penjelasan di bawah kode. Kode tanpa pemahaman tidak membantu saat ada galat.
- Jangan lompat bab. Bab berikutnya memakai hasil bab sebelumnya.
- Selalu jalankan "Uji coba" dan "Titik periksa" sebelum lanjut.
- Jika error: baca pesannya dari baris paling atas (Laravel menaruh penjelasan di atas), lalu lihat tabel "Kesalahan umum" di bab itu sebelum bertanya.
- Jawab "Pertanyaan pemahaman" di buku catatanmu. Pengajar sering menanyakannya langsung.
- Test merah itu informasi, bukan hukuman. Baca pesannya: ia menyebut apa yang diharapkan dan apa yang didapat.
Simbol yang dipakai
| Simbol | Arti |
|---|---|
| 📄 | Nama berkas yang harus dibuat/diubah |
| 💡 | Penjelasan konsep |
| ⚠️ | Hati-hati, bagian yang sering salah |
| 💥 | Galat yang sengaja kamu buat untuk belajar membaca pesannya |
| ✅ | Titik periksa: pastikan ini berhasil sebelum lanjut |
| 🧠 | Pertanyaan pemahaman |
| 🚀 | Tantangan tambahan (opsional) |
| 🩹 | Kesalahan umum dan cara memperbaikinya |
0.5Bentuk akhir folder proyek
Tidak perlu dihafal. Bab-bab berikutnya membangunnya sedikit demi sedikit. Yang bertanda ★ adalah berkas yang kamu tulis sendiri.
Alur satu permintaan
Semua fitur memakai alur yang sama. Begitu paham satu, kamu paham semuanya:
Analogi rumah makan: Route adalah resepsionis yang mengarahkan tamu. Controller adalah pelayan yang mengatur pesanan. Model adalah juru gudang yang mengambil bahan. Database adalah gudangnya. View adalah piring yang disajikan.
0.6Istilah yang akan sering muncul
| Istilah | Arti |
|---|---|
| Route | Aturan yang menghubungkan URL dengan method controller. |
| Controller | Kelas PHP berisi method yang melayani permintaan. |
| Model | Kelas PHP yang mewakili satu tabel database. |
| View / Blade | Berkas HTML yang berisi tempat kosong untuk diisi data. |
| Migration | Berkas kode yang mendefinisikan bentuk tabel. |
| Seeder | Berkas kode yang mengisi data contoh. |
| Validasi | Pemeriksaan data masuk sebelum disimpan. |
| CSRF | Serangan yang memaksa pengguna mengirim formulir tanpa sadar; dicegah dengan token rahasia (@csrf). |
| Idempotent | Aman dijalankan berkali-kali, hasilnya tetap sama. |
Titik periksa Bab 0
Centang setiap butir yang sudah kamu selesaikan.
- Saya bisa menjelaskan dengan kalimat sendiri apa aplikasi yang akan dibangun dan siapa penggunanya.
- Saya sudah menandai di permintaan Bu Rina: bagian tambah, lihat, ubah, hapus, dan satu aturan validasi.
- Saya bisa menyebut urutan 6 langkah alur satu permintaan tanpa melihat catatan.
- Saya tahu isi Paket Starter dan bagian mana yang saya ketik sendiri.
Pertanyaan pemahaman
- Di permintaan Bu Rina, kalimat mana yang menjadi aturan validasi? Menurutmu, bagaimana cara memastikan aturan itu selalu berlaku?
- Apa bedanya Model dan View?
- Gambar di kertas: alur permintaan dari browser sampai kembali ke browser, dengan kata-katamu sendiri.
➡️ Lanjut ke Bab 1 — Persiapan Alat dan Proyek Kosong.