Kita sudah melihat contoh kode PHP, tetapi belum membahas apa yang sesungguhnya terjadi di antara momen Anda menyimpan berkas .php dan momen browser menampilkan halamannya. Memahami perjalanan ini penting karena banyak keputusan teknis di masa depan — dari memilih cara menjalankan skrip sampai mendiagnosis halaman kosong — bergantung pada model kerja PHP. Pada chapter ini kita membedah alur tersebut langkah demi langkah, dari permintaan browser, pemrosesan oleh interpreter, sampai tanggapan HTML yang dikirim kembali.
Dari Berkas Sumber Menjadi Output #
Sebuah berkas .php pada dasarnya adalah dokumen templat: gabungan teks biasa (biasanya HTML) dan blok kode PHP di antara tag <?php dan ?>. Tugas interpreter PHP adalah membaca berkas tersebut baris demi baris dari atas ke bawah, lalu menghasilkan keluaran: teks di luar tag PHP diteruskan apa adanya, sedangkan kode di dalam tag PHP dieksekusi dan hasil eksekusinya (misalnya dari perintah echo) disisipkan pada posisi yang sama.
Perhatikan kembali berkas berikut, lalu bandingkan dengan output-nya:
<?php
// Blok PHP di awal berkas lazim dipakai untuk persiapan; di sini masih kosong
?>
<!DOCTYPE html>
<html lang="id">
<head>
<title>Halo PHP</title>
</head>
<body>
<h1><?php echo "Selamat datang, Budi!"; ?></h1>
<p>Anda belajar di kelas <?php echo 2026; ?>.</p>
</body>
</html>
Output yang Dihasilkan:
<!DOCTYPE html>
<html lang="id">
<head>
<title>Halo PHP</title>
</head>
<body>
<h1>Selamat datang, Budi!</h1>
<p>Anda belajar di kelas 2026.</p>
</body>
</html>Pada output tersebut terlihat dua hal penting. Pertama, seluruh baris HTML diteruskan tanpa perubahan — blok PHP pembuka yang hanya berisi komentar lenyap tanpa jejak, dan tag <html>, <head>, serta lainnya tetap utuh. Kedua, setiap blok <?php ... ?> di tubuh dokumen digantikan hasil eksekusinya: Selamat datang, Budi! pada baris <h1>, dan angka 2026 (otomatis dikonversi menjadi teks) pada baris <p>. HTML inilah yang diterima dan digambar oleh browser; tidak ada satu karakter PHP pun yang ikut terkirim.
Perjalanan Sebuah Request #
Pada lingkungan web sungguhan, ada beberapa aktor yang bekerja sama sebelum sebuah berkas .php berubah menjadi halaman di layar. Diagram berikut memetakan alurnya:
Berikut penjelasan tiap tahap pada diagram di atas:
- Browser mengirim permintaan HTTP — misalnya pengguna membuka
https://contoh.com/halo.php. Browser hanya mengirim teks permintaan standar HTTP; browser sama sekali tidak tahu isi berkashalo.php. - Web server menerima permintaan — Apache atau nginx melihat bahwa URL yang diminta berakhiran
.php, lalu menyerahkan pemrosesan berkas tersebut kepada interpreter PHP (cara penyerahannya bervariasi, misalnya lewat modul atau PHP-FPM). - Interpreter membaca dan mengurai berkas — tahap parsing memeriksa sintaks, mengubah kode menjadi struktur internal (opcode) yang siap dieksekusi.
- Kode dieksekusi — perintah demi perintah dijalankan: membaca database, menghitung nilai, memanggil fungsi, dan menulis output ke aliran keluaran.
- Hasil dikirim sebagai tanggapan — interpreter mengembalikan output HTML ke web server, lalu web server mengirimkannya ke browser sebagai tanggapan HTTP lengkap dengan status code dan header.
Dari sudut pandang pengguna, semua tahap itu terasa seperti satu klik yang instan. Dari sudut pandang kita sebagai pengembang, setiap tahap adalah tempat yang bisa kita amati dan kendalikan.
Parsing dan Eksekusi Kode #
Saat mengurai berkas, interpreter membagi isi berkas menjadi dua mode: mode output (di luar tag PHP) dan mode kode (di dalam tag PHP). Mode output tidak diproses sama sekali — inilah sebabnya HTML diteruskan apa adanya. Mode kode di-compile menjadi daftar instruksi bernama opcode, lalu dijalankan oleh mesin eksekusi Zend Engine.
Dua konsekuensi praktis dari model ini perlu Anda ingat. Pertama, kesalahan sintaks terdeteksi saat parsing, sebelum satu baris pun dieksekusi; satu tanda kurung yang hilang bisa membuat seluruh halaman gagal, bukan hanya barisnya. Kedua, proses kompilasi ini sebenarnya berulang setiap kali berkas diminta — untuk mengecilkan biayanya, server produksi hampir selalu mengaktifkan ekstensi OPcache yang menyimpan opcode hasil kompilasi agar permintaan berikutnya tinggal mengeksekusinya. Kita akan membahas OPcache lebih dalam pada chapter Memahami PHP Runtime.
Menjalankan PHP Tanpa Web Server #
Untungnya, memahami cara kerja PHP tidak menuntut Anda memasang web server lebih dulu. Interpreter PHP memiliki mode command line yang memproses berkas dengan tahap parsing dan eksekusi yang persis sama, hanya saja output ditampilkan di terminal:
php halaman.phpPerintah di atas mengeksekusi halaman.php dan mencetak hasilnya langsung ke terminal — output yang sama persis dengan apa yang akan dikirim web server ke browser. Seluruh contoh kode pada course ini diuji dengan cara ini, dan Anda akan memakainya sepanjang bagian awal pembelajaran. Setelah konsep dasar terbentuk, kita akan memakai built-in web server PHP (php -S) untuk merasakan alur request–response yang sesungguhnya pada Section Menjalankan Program PHP.
Ringkasan #
Berkas .php adalah templat yang diproses interpreter: HTML diteruskan apa adanya, kode PHP dieksekusi, dan hasilnya digabung menjadi tanggapan untuk browser. Alurnya melibatkan browser, web server, dan interpreter PHP yang mem-parsing lalu mengeksekusi kode menjadi opcode. Model per-request menjaga setiap permintaan tetap bersih dan terisolasi, sementara mode CLI memungkinkan kita berlatih tanpa web server. Dengan gambaran teknis ini, kita siap menempatkan PHP berdampingan dengan bahasa-bahasa pemrograman lain untuk memahami kekuatan dan batasnya.