Day 1 — Fondasi PHP & Struktur Laravel
Hari ini Bu Andri akan memahami bahan dasar Laravel: sedikit PHP, cara sebuah halaman web bekerja, lalu mengenali “ruangan-ruangan” di dalam proyek Laravel.
Target Belajar Hari Ini
Selamat datang, Bu Andri! Tidak perlu menghafal semuanya. Target hari pertama hanya memahami gambaran besar dan berani mencoba. Anggap Laravel seperti tata usaha digital: setiap berkas punya tempat dan setiap permintaan punya alur.
- Mengenali variabel, array, percabangan, perulangan, dan function di PHP.
- Memahami class dan object dengan analogi data siswa.
- Membuat serta menjalankan proyek Laravel pertama.
- Tahu fungsi folder penting tanpa harus menghafal seluruh folder.
- Menjalankan kode PHP langsung di playground halaman ini.
Sebelum PHP: Bagaimana Halaman Web Bekerja?
Saat Bu Andri membuka halaman daftar siswa, browser mengirim request (permintaan) ke server. Server menjalankan PHP/Laravel, mengambil data bila perlu, lalu mengirim response (jawaban) berupa HTML.
/siswa1. Refresh PHP Dasar
Variabel: kotak yang diberi nama
Variabel menyimpan nilai sementara. Di PHP, nama variabel selalu diawali tanda dolar $, dan perintah biasanya diakhiri titik koma ;.
<?php
$nama = "Andri";
$jabatan = "Staf Tata Usaha";
$tahunMasuk = 2024;
// Titik (.) dipakai untuk menyambung teks
echo "Nama: " . $nama . PHP_EOL;
echo "Jabatan: " . $jabatan . PHP_EOL;
echo "Tahun masuk: " . $tahunMasuk;
Array: satu kotak berisi banyak data
Array cocok untuk daftar. Array asosiatif memakai label, sehingga nama lebih mudah dipahami daripada sekadar nomor urut.
<?php
$siswa = [
["nama" => "Alya", "kelas" => "7A", "aktif" => true],
["nama" => "Bima", "kelas" => "7B", "aktif" => false],
["nama" => "Citra", "kelas" => "7A", "aktif" => true],
];
echo $siswa[0]["nama"]; // Alya
Percabangan dan perulangan
if membantu program memilih tindakan. foreach mengerjakan tindakan yang sama untuk setiap data.
<?php
$nilai = 82;
if ($nilai >= 75) {
echo "Status: Lulus" . PHP_EOL;
} else {
echo "Status: Perlu remedial" . PHP_EOL;
}
$mapel = ["Matematika", "Bahasa Indonesia", "IPA"];
foreach ($mapel as $nomor => $namaMapel) {
echo ($nomor + 1) . ". " . $namaMapel . PHP_EOL;
}
= berarti mengisi nilai, sedangkan == atau === berarti membandingkan. Untuk kebiasaan aman, gunakan === saat tipe datanya harus sama.2. Function, Class, dan Object
Function: prosedur yang bisa dipakai ulang
Bayangkan function sebagai formulir otomatis: masukkan nama dan nilai, lalu function mengembalikan kalimat hasil.
<?php
function buatStatus(string $nama, int $nilai): string
{
$status = $nilai >= 75 ? "lulus" : "remedial";
return "$nama dinyatakan $status (nilai: $nilai).";
}
echo buatStatus("Alya", 88);
Class = cetakan, object = hasil cetakan
Seperti format kosong kartu siswa: menentukan kolom dan kemampuan yang tersedia.
Seperti satu kartu yang sudah diisi untuk seorang siswa tertentu.
<?php
class Siswa
{
public function __construct(
public string $nama,
public string $kelas
) {}
public function perkenalan(): string
{
return "Saya {$this->nama} dari kelas {$this->kelas}.";
}
}
$alya = new Siswa("Alya", "7A");
echo $alya->perkenalan();
Laravel banyak memakai class: Controller, Model, Middleware, dan lainnya. Belum perlu menguasai OOP hari ini—cukup kenali bahwa new Siswa(...) membuat object dari class Siswa.
3. Membuat Proyek Laravel Pertama
Pastikan alatnya tersedia
Buka Terminal (macOS/Linux) atau PowerShell (Windows), lalu jalankan satu per satu:
php --version
composer --version
Untuk Laravel modern, gunakan PHP 8.2 atau lebih baru. Jika perintah belum dikenali, pasang Laravel Herd agar PHP dan Composer tersedia dengan lebih mudah.
Buat dan jalankan proyek
# Membuat project bernama sekolah-app
composer create-project laravel/laravel sekolah-app
# Masuk ke folder project
cd sekolah-app
# Jalankan server lokal
php artisan serve
Buka http://127.0.0.1:8000. Jika halaman Laravel muncul, proyek pertama Bu Andri sudah berhasil! Hentikan server dengan Ctrl + C.
php artisan adalah asisten perintah Laravel. Coba php artisan list untuk melihat tugas yang bisa dibantu, misalnya membuat controller atau menjalankan database migration.php artisan serve --port=8001, kemudian buka http://127.0.0.1:8001.4. Peta Folder Laravel
Jangan menghafal semua folder. Untuk minggu pertama, fokus pada bagian berwarna merah berikut.
├── app/ ← logika utama aplikasi
│ ├── Http/Controllers/ ← pengatur request
│ └── Models/ ← representasi data
├── bootstrap/ ← proses awal framework
├── config/ ← file konfigurasi
├── database/ ← migration, factory, seeder
├── public/ ← pintu masuk web & aset publik
├── resources/views/ ← tampilan Blade
├── routes/web.php ← daftar alamat web
├── storage/ ← log, cache, file upload
├── tests/ ← pengujian otomatis
├── vendor/ ← paket Composer; jangan diedit
├── .env ← rahasia & pengaturan lokal
└── artisan ← alat perintah Laravel
| Lokasi | Analogi sekolah | Contoh isi |
|---|---|---|
routes/web.php | Buku daftar loket | Alamat /siswa diarahkan ke mana |
app/Http/Controllers | Petugas tata usaha | Menerima permintaan dan menyiapkan data |
app/Models | Petugas arsip | Membaca/menulis data siswa |
resources/views | Papan pengumuman | HTML/Blade yang dilihat pengguna |
public | Gerbang depan | index.php, gambar, file publik |
.env | Lemari berkunci | Password database dan pengaturan server |
.env ke GitHub atau grup chat. File itu dapat berisi kata sandi database dan kunci aplikasi. Laravel sudah memasukkannya ke .gitignore.5. Praktik Mini: Route Pertama
Buka routes/web.php, lalu tambahkan route berikut. Route adalah aturan: “kalau alamat ini diminta, berikan jawaban itu.”
use Illuminate\Support\Facades\Route;
Route::get('/halo', function () {
return '<h1>Halo, Bu Andri!</h1><p>Route pertama berhasil.</p>';
});
Route::get('/siswa/{nama}', function (string $nama) {
return "Data siswa: " . htmlspecialchars($nama);
});
Dengan server masih berjalan, buka http://127.0.0.1:8000/halo, lalu coba http://127.0.0.1:8000/siswa/Alya.
❓ Mengapa routes/web.php bukan tempat semua logika?
Route sebaiknya hanya menjadi penunjuk arah. Pada aplikasi nyata, logika dipindah ke Controller agar kode mudah dibaca, diuji, dan dirawat. Kita akan mempelajarinya pada Day 2.
❓ Mengapa contoh memakai htmlspecialchars()?
Agar teks dari URL tidak dianggap sebagai HTML berbahaya. Di Blade nanti, sintaks {{ $nama }} melakukan pengamanan ini secara otomatis.
Playground PHP — Coba Langsung
Playground ini menjalankan PHP sungguhan di browser memakai WebAssembly (php-wasm). Kode tetap berada di perangkat Bu Andri dan tidak dikirim ke server kami.
Mesin PHP sedang disiapkan…
Latihan Mandiri & Checklist Selesai
Latihan A — di playground
- Ubah nama pada contoh “Variabel” menjadi nama Bu Andri sendiri.
- Pilih contoh “Array & foreach”, lalu tambahkan satu nama siswa.
- Pilih contoh “Function nilai”, lalu ubah nilai agar hasil berubah menjadi remedial.
- Buat variabel
$sekolahdan tampilkan denganecho.
Latihan B — di proyek Laravel
- Buat proyek
sekolah-appdan jalankan servernya. - Buat route
/profil-sekolahyang menampilkan nama sekolah. - Buat route dinamis
/kelas/{nama}yang menampilkan nama kelas. - Cari folder
app,resources/views,routes, dan file.envlewat VS Code.
🎉 Day 1 Selesai jika…
Proyek Laravel tampil di browser, route /halo berhasil, dan Bu Andri bisa menjelaskan fungsi routes, app, views, public, serta .env dengan kata-kata sendiri.