Skip to content

01. Mengenal PHP Native ​

Sebelum melangkah lebih jauh ke framework modern seperti Laravel, memahami dasar kerja PHP Native merupakan pondasi paling fundamental yang wajib dikuasai oleh setiap pengembang web.


A. Pengantar ​

Di dunia pengembangan web, istilah PHP Native merujuk pada penulisan kode PHP murni tanpa menggunakan framework tambahan seperti Laravel, Symfony, atau CodeIgniter. Semua logika program, koneksi basis data, pengelolaan sesi, hingga tampilan antarmuka dibangun langsung menggunakan fungsi bawaan bahasa PHP.

Memahami PHP Native memberi Anda gambaran nyata tentang bagaimana web bekerja di balik layar: bagaimana server menerima permintaan dari browser, memproses data, dan mengirimkannya kembali dalam bentuk dokumen HTML. Pemahaman ini akan membuat Anda jauh lebih menghargai kemudahan, keamanan, dan struktur rapi yang ditawarkan oleh Laravel pada materi-materi berikutnya.


B. Tujuan Pembelajaran ​

Setelah menyelesaikan materi ini, Anda diharapkan mampu:

  1. Menjelaskan definisi dan karakteristik penulisan kode PHP Native.
  2. Memahami cara kerja PHP sebagai server-side scripting language.
  3. Memahami bagaimana kode PHP berinteraksi dan disematkan ke dalam dokumen HTML.
  4. Menulis kode PHP Native sederhana untuk menampilkan data koleksi buku perpustakaan.
  5. Mengidentifikasi kelebihan serta tantangan skalabilitas dan keamanan saat membangun aplikasi menggunakan PHP Native.

C. Penjelasan Konsep ​

1. Apa itu PHP? ​

PHP (akronim rekursif dari PHP: Hypertext Preprocessor) adalah bahasa pemrograman open-source yang dirancang khusus untuk pengembangan web. Berbeda dengan JavaScript di sisi klien yang dieksekusi langsung di browser pengunjung, PHP adalah bahasa server-side.

Artinya, seluruh baris kode PHP dijalankan dan diselesaikan di dalam server web (seperti Apache, Nginx, atau PHP Built-in Server). Browser pengguna tidak pernah melihat satu baris pun kode PHP asli; browser hanya menerima hasil akhir berupa teks HTML biasa, CSS, JavaScript, atau JSON.

2. Siklus Alur Kerja Server-Side PHP ​

Mari kita pahami siklus permintaan (request-response lifecycle) sederhana saat seseorang membuka halaman web PHP:

  1. Permintaan Pengguna (Request): Pengunjung mengetik alamat URL di browser (misalnya http://localhost/buku.php) dan menekan tombol Enter.
  2. Penerimaan Web Server: Web server menerima permintaan tersebut dan mendeteksi bahwa berkas yang diminta memiliki ekstensi .php.
  3. Eksekusi oleh PHP Interpreter: Web server meneruskan berkas tersebut ke interpreter PHP. Interpreter membaca kode dari atas ke bawah, menjalankan logika (seperti mengambil data atau melakukan perulangan), dan menghasilkan teks HTML.
  4. Pengiriman Hasil (Response): Web server mengirimkan teks HTML yang sudah jadi kembali ke browser pengunjung.
  5. Rendering di Browser: Browser menerima dokumen HTML tersebut lalu menampilkannya sebagai halaman web visual.

3. Hubungan Erat PHP dengan HTML ​

Salah satu keunikan utama PHP sejak awal diciptakan adalah kemampuannya untuk disematkan (embedded) secara langsung di dalam dokumen HTML. Blok kode PHP diawali dengan tag pembuka <?php dan diakhiri dengan tag penutup ?>. Teks di luar tag tersebut akan diperlakukan sebagai teks HTML biasa.


D. Contoh Kasus: Menampilkan Katalog Buku Perpustakaan ​

Untuk memahami konsep ini secara praktis, bayangkan kita sedang membuat halaman sederhana untuk menampilkan daftar koleksi buku perpustakaan.

Simpan kode berikut dalam berkas bernama katalog_buku.php:

php
<?php
// 1. Data koleksi buku disimpan dalam array asosiatif (simulasi data basis data)
$koleksiBuku = [
    [
        'id' => 1,
        'judul' => 'Pemrograman Web dengan PHP Modern',
        'penulis' => 'Ahmad Fauzi',
        'tersedia' => true
    ],
    [
        'id' => 2,
        'judul' => 'Dasar Perancangan Basis Data Relasional',
        'penulis' => 'Budi Santoso',
        'tersedia' => false
    ],
    [
        'id' => 3,
        'judul' => 'Membangun Arsitektur MVC dari Nol',
        'penulis' => 'Citra Lestari',
        'tersedia' => true
    ]
];
?>
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Katalog Buku Perpustakaan - PHP Native</title>
    <style>
        body { font-family: sans-serif; padding: 24px; color: #1E293B; background: #F8FAFC; }
        table { width: 100%; border-collapse: collapse; background: #FFFFFF; margin-top: 16px; }
        th, td { border: 1px solid #E2E8F0; padding: 12px; text-align: left; }
        th { background: #F1F5F9; font-weight: 600; }
        .badge-tersedia { color: #047857; background: #ECFDF5; padding: 4px 8px; border-radius: 4px; font-size: 12px; }
        .badge-dipinjam { color: #B91C1C; background: #FEF2F2; padding: 4px 8px; border-radius: 4px; font-size: 12px; }
    </style>
</head>
<body>
    <h1>Daftar Koleksi Buku Perpustakaan</h1>
    <p>Data di bawah ini diproses di server menggunakan PHP Native.</p>

    <table>
        <thead>
            <tr>
                <th>No</th>
                <th>Judul Buku</th>
                <th>Penulis</th>
                <th>Status Ketersediaan</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($koleksiBuku as $index => $buku): ?>
                <tr>
                    <td><?= $index + 1; ?></td>
                    <td><?= htmlspecialchars($buku['judul']); ?></td>
                    <td><?= htmlspecialchars($buku['penulis']); ?></td>
                    <td>
                        <?php if ($buku['tersedia']): ?>
                            <span class="badge-tersedia">Tersedia</span>
                        <?php else: ?>
                            <span class="badge-dipinjam">Sedang Dipinjam</span>
                        <?php endif; ?>
                    </td>
                </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
</body>
</html>

E. Penjelasan Kode ​

Mari kita bedah bagian-bagian penting dari kode di atas:

  1. Tag Pembuka PHP (<?php ... ?>): Bagian awal berkas digunakan untuk menyiapkan data. Variabel $koleksiBuku adalah array bersarang (multidimensional array) yang merepresentasikan beberapa baris data buku, lengkap dengan atribut judul, penulis, dan status ketersediaan.

  2. Perulangan foreach: Sintaks <?php foreach ($koleksiBuku as $index => $buku): ?> digunakan untuk mengulang setiap elemen dalam array. Gaya penulisan alternatif dengan titik dua (:) dan endforeach sangat umum digunakan ketika PHP disematkan di dalam struktur HTML agar kode lebih rapi dan mudah dibaca daripada menggunakan kurung kurawal { }.

  3. Short Echo Tag (<?= ... ?>): Sintaks <?= $index + 1; ?> adalah bentuk ringkas dari <?php echo $index + 1; ?>. Sintaks ini digunakan khusus untuk mencetak nilai variabel ke dalam output HTML.

  4. Fungsi Sanitasi htmlspecialchars(): Perhatikan pemanggilan htmlspecialchars($buku['judul']). Fungsi ini sangat penting untuk mengonversi karakter khusus HTML (seperti <, >, dan &) menjadi entitas aman. Ini adalah mekanisme proteksi dasar dari serangan XSS (Cross-Site Scripting) pada PHP Native.

  5. Pengondisian Logika if ... else: Blok <?php if ($buku['tersedia']): ?> memeriksa status buku. Jika bernilai true, badge hijau "Tersedia" ditampilkan. Jika bernilai false, badge merah "Sedang Dipinjam" yang dimunculkan.


F. Hasil yang Diharapkan ​

Ketika berkas di atas dijalankan pada web server lokal dan dibuka di browser, pengunjung akan melihat tabel rapi berisi 3 baris buku:

  • Baris 1: Buku Pemrograman Web dengan PHP Modern dengan status hijau "Tersedia".
  • Baris 2: Buku Dasar Perancangan Basis Data Relasional dengan status merah "Sedang Dipinjam".
  • Baris 3: Buku Membangun Arsitektur MVC dari Nol dengan status hijau "Tersedia".

Jika Anda menekan tombol Ctrl + U (View Page Source) di browser, Anda tidak akan menemukan satu pun tag <?php atau perintah foreach. Yang terlihat murni elemen <table>, <tr>, dan <td> dengan data yang sudah terisi.


G. Kelebihan dan Keterbatasan PHP Native ​

Kelebihan PHP Native ​

  • Mudah Dimulai: Anda hanya memerlukan satu berkas berekstensi .php dan web server lokal (seperti XAMPP atau PHP CLI) untuk langsung melihat hasilnya.
  • Ringan dan Cepat: Tanpa lapisan abstraksi framework, waktu pemuatan berkas sangat cepat pada aplikasi skala kecil.
  • Pondasi Belajar: Memaksa Anda memahami cara kerja HTTP request, session, cookie, dan manipulasi basis data murni (PDO atau MySQLi).

Keterbatasan saat Aplikasi Membesar ​

Ketika aplikasi perpustakaan mulai membutuhkan fitur autentikasi multi-user, pencatatan denda, transaksi peminjaman, dan validasi form yang rumit, PHP Native mulai menunjukkan kelemahannya:

  1. Spaghetti Code: Kode logika query basis data, pemrosesan bisnis, dan tampilan HTML cenderung bercampur aduk dalam satu berkas, membuat kode sulit dipelihara (maintenance).
  2. Beban Keamanan Sepenuhnya Manual: Anda harus mengingat untuk menulis proteksi manual terhadap SQL Injection (menggunakan prepared statements), CSRF token pada setiap formulir, dan XSS sanitasi pada setiap output. Satu kelalaian kecil dapat membuka celah keamanan fatal.
  3. Tidak Ada Standar Arsitektur: Setiap pengembang memiliki gaya penulisan dan struktur folder sendiri, menyulitkan kerja sama tim.
  4. Routing yang Kaku: Setiap halaman web biasanya harus memiliki berkas fisik di server (misalnya /buku.php?id=1), bukan alamat URL yang rapi dan elegan (seperti /books/1).

Catatan

Keterbatasan-keterbatasan di atas melahirkan kebutuhan akan Framework, yaitu kerangka kerja terstruktur yang menyediakan solusi siap pakai untuk masalah keamanan, routing, pemisahan arsitektur, dan produktivitas tim.


H. Kesalahan Umum Pemula ​

  1. Lupa Tanda Titik Koma (;): PHP mewajibkan setiap baris instruksi diakhiri dengan titik koma. Kesalahan kecil ini sering memicu pesan error Parse error: syntax error, unexpected ....
  2. Mencetak Output Langsung Tanpa htmlspecialchars: Banyak pemula mencetak data langsung menggunakan echo $data;. Jika data tersebut berasal dari input pengguna asing dan mengandung skrip berbahaya <script>, aplikasi akan rentan terhadap serangan XSS.
  3. Menempatkan Pemrosesan Header Setelah Output HTML: Pada PHP Native, fungsi seperti header("Location: login.php") atau session_start() harus dipanggil sebelum ada karakter atau tag HTML yang dikirim ke browser. Mengabaikan aturan ini menyebabkan error Cannot modify header information - headers already sent.

I. Latihan Mandiri ​

Untuk menguji pemahaman Anda sebelum melanjutkan:

  1. Tambahkan data buku ke-4 pada array $koleksiBuku di atas dengan judul buku favorit Anda.
  2. Tambahkan satu kolom baru pada tabel bernama Kategori (misalnya: Teknologi, Sains, atau Sastra) dan tampilkan nilainya pada setiap baris.
  3. Buat variabel baru bernama $maksimalPinjam = 3; dan tampilkan informasi tersebut di atas tabel menggunakan sintaks short echo PHP.

J. Kesimpulan ​

PHP Native adalah fondasi utama yang mengajarkan kita bagaimana script di sisi server memproses data dan menghasilkan antarmuka web dinamis. Namun, membangun aplikasi yang kompleks seperti Sistem Informasi Perpustakaan menggunakan PHP Native membutuhkan usaha berulang untuk menangani keamanan, struktur berkas, dan perutean (routing).

Oleh karena itu, pada materi berikutnya kita akan berkenalan dengan Laravel, framework PHP modern yang mempermudah proses ini secara elegan melalui konsep arsitektur MVC (Model-View-Controller).


Referensi Dokumentasi ​