Python

🐘 PHP untuk Pemula: Panduan Lengkap

Tutorial lengkap belajar PHP dari nol — instalasi, variabel, array, fungsi, form handling, session, dan quiz interaktif dengan contoh kode praktis

1. Pengenalan PHP

PHP (PHP: Hypertext Preprocessor) adalah bahasa pemrograman server-side yang dirancang khusus untuk pengembangan web. PHP pertama kali dibuat oleh Rasmus Lerdorf pada tahun 1995 dan telah berkembang menjadi salah satu bahasa pemrograman web paling populer di dunia.

PHP berjalan di sisi server, yang berarti kode PHP dieksekusi di server web sebelum dikirimkan ke browser pengguna dalam bentuk HTML. Ini menjadikan PHP sangat cocok untuk membuat website dinamis, sistem manajemen konten (CMS), e-commerce, dan aplikasi web lainnya.

Mengapa Memilih PHP?

Keunggulan Penjelasan
Mudah DipelajariSintaks PHP relatif sederhana dan banyak tutorial tersedia di internet
Server-SideBerjalan di server, kode sumber tidak terlihat oleh pengguna akhir
KompatibelBisa digunakan dengan hampir semua web server dan database
Framework BerlimpahLaravel, Symfony, CodeIgniter — pilihan framework yang sangat banyak
CMS PopulerWordPress, Drupal, Joomla dibangun dengan PHP
Gratis & Open SourceBisa digunakan dan didistribusikan secara bebas
Komunitas BesarJutaan developer aktif, solusi mudah ditemukan untuk setiap masalah

PHP vs Bahasa Web Lainnya

Aspek PHP Python Node.js
TipeServer-side scriptingGeneral-purposeServer-side JS runtime
TypingDynamicDynamicDynamic
Sintaks🟢 Mudah🟢 Sangat Mudah🟡 Sedang
Ekosistem Web🟢 Sangat Kaya🟡 Cukup🟢 Sangat Kaya
Hosting🟢 Hampir Semua🟡 Terbatas🟡 Terbatas
Cocok untukWeb, CMS, E-commerceAI, Data, WebAPI, Realtime App
Diagram: Cara Kerja PHP
┌───────────────────────────────────────────────────────┐
│                CARA KERJA PHP                         │
│                                                       │
│  ┌──────────┐    HTTP Request    ┌──────────────┐    │
│  │  Browser  │ ───────────────►  │  Web Server  │    │
│  │ (Client)  │                   │ (Apache/Nginx)│   │
│  └──────────┘                    └──────┬───────┘    │
│       │                                 │            │
│       │                          ┌──────▼───────┐    │
│       │                          │  PHP Engine   │    │
│       │                          │ (Eksekusi kode)│   │
│       │                          └──────┬───────┘    │
│       │                                 │            │
│       │                          ┌──────▼───────┐    │
│       │                          │   Database    │    │
│       │                          │  (MySQL/PG)   │    │
│       │                          └──────┬───────┘    │
│       │                                 │            │
│  ┌──────────┐    HTML Response    ┌─────▼────────┐   │
│  │  Browser  │ ◄──────────────── │  Web Server   │   │
│  │ (Render)  │                   │  (Kirim HTML)  │  │
│  └──────────┘                    └──────────────┘   │
└───────────────────────────────────────────────────────┘

2. Instalasi PHP

Untuk menjalankan PHP, Anda membutuhkan web server (seperti Apache atau Nginx) dan interpreter PHP. Cara termudah adalah menggunakan paket yang sudah mencakup semuanya.

Instalasi Menggunakan XAMPP (Windows)

Windows — XAMPP
# 1. Kunjungi https://www.apachefriends.org/download.html
# 2. Download XAMPP untuk Windows
# 3. Jalankan installer dan ikuti wizard
# 4. Setelah instalasi, buka XAMPP Control Panel
# 5. Klik "Start" pada Apache dan MySQL

# Untuk menjalankan file PHP:
# Simpan file .php di C:\xampp\htdocs\
# Buka browser dan akses: http://localhost/nama-file.php

# Verifikasi instalasi PHP di Command Prompt:
php --version
# Output: PHP 8.3.x (cli)

Instalasi Menggunakan Laravel Herd (macOS/Windows)

Herd
# Laravel Herd adalah cara cepat menjalankan PHP di local
# 1. Download dari https://herd.laravel.com
# 2. Install dan jalankan
# PHP langsung tersedia di terminal!

php --version
composer --version

Instalasi di Linux (Ubuntu/Debian)

Linux
# Update package manager
sudo apt update && sudo apt upgrade -y

# Instal PHP dan ekstensi umum
sudo apt install php php-cli php-mysql php-mbstring \
  php-xml php-curl php-zip php-gd -y

# Instal Composer (package manager PHP)
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

# Verifikasi
php --version
composer --version

Program PHP Pertama

PHP — hello.php
<?php
// File: hello.php
echo "Halo, dunia!<br>";
echo "Selamat datang di PHP!<br>";

// Menampilkan informasi PHP
echo "Versi PHP: " . phpversion() . "<br>";
echo "Sistem Operasi: " . PHP_OS . "<br>";

// Variabel sederhana
$nama = "BeebaneLabs";
echo "Nama: $nama<br>";

// Menjalankan di terminal:
// php hello.php
//
// Output:
// Halo, dunia!
// Selamat datang di PHP!
// Versi PHP: 8.3.x
// Nama: BeebaneLabs
?>
💡 Tips

File PHP harus diakhiri dengan ekstensi .php. Semua kode PHP harus berada di dalam tag <?php ... ?>. Saat mengembangkan di local, gunakan XAMPP atau Laragon untuk pengalaman yang lebih mudah. Pastikan untuk mengaktifkan error reporting saat development: error_reporting(E_ALL);

3. Variabel dan Tipe Data

Variabel di PHP diawali dengan tanda dolar ($). PHP menggunakan dynamic typing, artinya Anda tidak perlu mendeklarasikan tipe data secara eksplisit.

Mendeklarasikan Variabel

PHP — Variabel
<?php
// Deklarasi variabel — harus diawali $
$nama = "Budi Santoso";    // string
$umur = 25;                 // integer
$tinggi = 175.5;            // float
$isActive = true;           // boolean

// Menampilkan variabel
echo "Nama: $nama<br>";         // Nama: Budi Santoso
echo "Umur: $umur tahun<br>";   // Umur: 25 tahun

// PHP bisa mengubah tipe variabel secara dinamis
$x = 10;                    // integer
$x = "sekarang string";     // string — tidak masalah!
$x = 3.14;                  // float — berubah lagi!

// Konstanta
define("PI", 3.14159);
const MAX_LOGIN = 5;

echo PI . "<br>";           // 3.14159
echo MAX_LOGIN . "<br>";    // 5

// Aturan penamaan variabel:
// ✅ $nama_lengkap, $umurPengguna, $_private, $jumlah2
// ❌ $2angka (angka di depan), $nama-lengkap (tanda minus)
// ❌ $class, $function (reserved words)
?>

Tipe Data PHP

Tipe Contoh Penjelasan
string"hello", 'world'Teks / string
int42, -10, 0Bilangan bulat
float3.14, -0.5Bilangan desimal
booltrue, falseBoolean / logika
array[1, 2, 3]Kumpulan data
objectnew stdClass()Instance dari class
nullnullTipe kosong
resourcefopen(...)Referensi resource eksternal

String di PHP

PHP — String
<?php
// Single quote — tidak bisa interpolasi
echo 'Halo $nama<br>';      // Halo $nama (literal)

// Double quote — bisa interpolasi variabel
$nama = "Budi";
echo "Halo $nama<br>";      // Halo Budi

// Concatenation (penggabungan)
$depan = "Budi";
$belakang = "Santoso";
$namaLengkap = $depan . " " . $belakang;
echo $namaLengkap . "<br>";  // Budi Santoso

// Heredoc dan Nowdoc
$nama = "BeebaneLabs";
$html = <<<HTML
<div class="card">
  <h2>$nama</h2>
  <p>Selamat datang!</p>
</div>
HTML;
echo $html;

// String functions
echo strlen("PHP");                    // 3
echo strtoupper("hello");              // HELLO
echo strtolower("WORLD");              // world
echo str_replace("a", "o", "malam");   // molom
echo substr("Indonesia", 0, 3);        // Ind
echo strpos("Hello World", "World");   // 6
?>

4. Array

Array di PHP sangat fleksibel dan mendukung berbagai tipe data. PHP memiliki tiga jenis array: indexed array, associative array, dan multidimensional array.

Indexed Array

PHP — Indexed Array
<?php
// Membuat indexed array
$buah = ["apel", "mangga", "jeruk", "pisang"];
$angka = array(1, 2, 3, 4, 5);  // cara lama

// Mengakses elemen (index dimulai dari 0)
echo $buah[0] . "<br>";    // apel
echo $buah[2] . "<br>";    // jeruk

// Menambah elemen
$buah[] = "anggur";          // tambah di akhir
array_push($buah, "melon");  // cara lain

// Menghapus elemen
unset($buah[1]);             // hapus "mangga"

// Menghitung elemen
echo count($buah) . "<br>";  // jumlah elemen

// Iterasi dengan for
for ($i = 0; $i < count($angka); $i++) {
    echo $angka[$i] . " ";
}
echo "<br>";  // 1 2 3 4 5

// Iterasi dengan foreach (lebih disarankan)
foreach ($buah as $item) {
    echo "$item<br>";
}

// Mengambil index juga
foreach ($buah as $index => $item) {
    echo "$index: $item<br>";
}
?>

Associative Array

PHP — Associative Array
<?php
// Associative array — key-value pairs (mirip dictionary di Python)
$mahasiswa = [
    "nama"   => "Andi Wijaya",
    "nim"    => "2024001",
    "jurusan" => "Teknik Informatika",
    "ipk"    => 3.75
];

// Mengakses nilai
echo $mahasiswa["nama"] . "<br>";     // Andi Wijaya
echo $mahasiswa["jurusan"] . "<br>"; // Teknik Informatika

// Menambah elemen baru
$mahasiswa["angkatan"] = 2024;

// Iterasi associative array
foreach ($mahasiswa as $key => $value) {
    echo "$key: $value<br>";
}

// Array multidimensi
$kelas = [
    ["nama" => "Andi", "nilai" => 85],
    ["nama" => "Budi", "nilai" => 92],
    ["nama" => "Citra", "nilai" => 78],
];

// Akses elemen multidimensi
echo $kelas[0]["nama"] . "<br>";   // Andi
echo $kelas[1]["nilai"] . "<br>";  // 92

// Iterasi array multidimensi
foreach ($kelas as $mhs) {
    echo "{$mhs['nama']}: {$mhs['nilai']}<br>";
}
?>

Fungsi Array yang Berguna

PHP — Array Functions
<?php
$angka = [5, 3, 8, 1, 9, 2, 7];

// Sorting
sort($angka);            // Ascending: [1,2,3,5,7,8,9]
rsort($angka);           // Descending: [9,8,7,5,3,2,1]

// Mengambil bagian array
$slice = array_slice($angka, 0, 3);   // 3 elemen pertama
$chunk = array_chunk($angka, 3);      // Bagi jadi kelompok

// Pencarian
$ada = in_array(8, $angka);           // true
$index = array_search(8, $angka);     // index elemen

// Manipulasi
$merged = array_merge([1, 2], [3, 4]); // [1,2,3,4]
$unique = array_unique([1, 2, 2, 3]);  // [1,2,3]
$reversed = array_reverse([1, 2, 3]);  // [3,2,1]

// Filter dan Map (seperti Python!)
$genap = array_filter($angka, fn($x) => $x % 2 === 0);
$ganda = array_map(fn($x) => $x * 2, $angka);

// Array ke string dan sebaliknya
$str = implode(", ", ["a", "b", "c"]);  // "a, b, c"
$arr = explode(", ", "a, b, c");        // ["a", "b", "c"]

// Extract keys dan values
$keys = array_keys($mahasiswa);
$values = array_values($mahasiswa);

// Array column (sangat berguna untuk data dari database)
$namaList = array_column($kelas, "nama");
// ["Andi", "Budi", "Citra"]
?>

5. Operator

PHP mendukung berbagai jenis operator seperti bahasa pemrograman lainnya.

Operator Aritmatika dan Perbandingan

PHP — Operator
<?php
// Operator aritmatika
$a = 15;
$b = 4;

echo $a + $b;   // 19 (penjumlahan)
echo $a - $b;   // 11 (pengurangan)
echo $a * $b;   // 60 (perkalian)
echo $a / $b;   // 3.75 (pembagian)
echo $a % $b;   // 3 (modulus/sisa bagi)
echo $a ** $b;  // 50625 (pangkat)

// Shortcut assignment
$x = 10;
$x += 5;   // $x = $x + 5 → 15
$x -= 3;   // $x = $x - 3 → 12
$x *= 2;   // $x = $x * 2 → 24

// Operator perbandingan
$a = 10;
$b = "10";  // string!

var_dump($a == $b);   // true  (sama, loose comparison)
var_dump($a === $b);  // false (identik, strict — tipe berbeda!)
var_dump($a !== $b);  // true  (tidak identik)
var_dump($a > 5);     // true
var_dump($a < 20);    // true
var_dump($a <=> 10);  // 0 (spaceship: -1, 0, atau 1)

// Operator logika
$umur = 25;
$punyaSIM = true;

$bisaMengemudi = $umur >= 17 && $punyaSIM;   // AND
$layakPilih = $umur >= 17 || $umur < 60;     // OR
$belumDewasa = !($umur >= 18);               // NOT

// Null coalescing operator (sangat berguna!)
$username = $_GET["user"] ?? "Guest";   // jika null, pakai "Guest"
$nama = $input ?? $default ?? "Anonim"; // chaining

// Ternary operator
$status = $umur >= 18 ? "Dewasa" : "Anak-anak";
echo "Status: $status<br>";  // Status: Dewasa
?>

6. Kontrol Alur

Kontrol alur menentukan jalannya eksekusi program berdasarkan kondisi atau pengulangan.

If-Else dan Switch

PHP — If-Else
<?php
$nilai = 85;

// If-ElseIf-Else
if ($nilai >= 90) {
    echo "Grade: A (Excellent)<br>";
} elseif ($nilai >= 80) {
    echo "Grade: B (Good)<br>";        // ← ini yang dieksekusi
} elseif ($nilai >= 70) {
    echo "Grade: C (Average)<br>";
} else {
    echo "Grade: D (Below Average)<br>";
}

// Match expression (PHP 8+) — lebih fleksibel dari switch
$hari = date("l");
$tipeHari = match($hari) {
    "Saturday", "Sunday" => "Akhir Pekan 🎉",
    "Monday" => "Senin yang berat 😫",
    default => "Hari kerja 💪"
};
echo "$hari: $tipeHari<br>";

// Switch (cara klasik)
$menu = "dashboard";
switch ($menu) {
    case "dashboard":
        echo "Halaman Dashboard<br>";
        break;
    case "profile":
        echo "Halaman Profile<br>";
        break;
    case "settings":
        echo "Halaman Settings<br>";
        break;
    default:
        echo "Halaman tidak ditemukan<br>";
}
?>

Perulangan (Loops)

PHP — Loops
<?php
// For loop
for ($i = 1; $i <= 5; $i++) {
    echo "Iterasi ke-$i<br>";
}

// While loop
$count = 1;
while ($count <= 5) {
    echo "Count: $count<br>";
    $count++;
}

// Do-While — minimal sekali dieksekusi
$x = 10;
do {
    echo "x = $x<br>";   // tetap dieksekusi sekali meski kondisi false
    $x++;
} while ($x < 5);

// Foreach dengan array
$mahasiswa = ["Andi", "Budi", "Citra"];
foreach ($mahasiswa as $index => $nama) {
    echo ($index + 1) . ". $nama<br>";
}
// 1. Andi
// 2. Budi
// 3. Citra

// Break dan Continue
for ($i = 1; $i <= 10; $i++) {
    if ($i == 3) continue;   // skip angka 3
    if ($i == 8) break;      // stop di angka 8
    echo "$i ";
}
echo "<br>";  // 1 2 4 5 6 7
?>

7. Fungsi

Fungsi adalah blok kode yang bisa dipanggil berulang kali. PHP memiliki banyak built-in functions dan juga mendukung pembuatan fungsi sendiri.

Membuat Fungsi

PHP — Fungsi
<?php
// Fungsi sederhana
function sapaPengguna($nama) {
    return "Halo, $nama! Selamat datang di PHP!<br>";
}
echo sapaPengguna("Andi");  // Halo, Andi! Selamat datang di PHP!

// Fungsi dengan default parameter
function buatProfil($nama, $umur = 25, $kota = "Jakarta") {
    return "Nama: $nama, Umur: $umur, Kota: $kota<br>";
}
echo buatProfil("Budi");              // Nama: Budi, Umur: 25, Kota: Jakarta
echo buatProfil("Citra", 22);         // Nama: Citra, Umur: 22, Kota: Jakarta
echo buatProfil("Dian", 30, "Bandung"); // Nama: Dian, Umur: 30, Kota: Bandung

// Return multiple values dengan array
function hitungStatistik($angka) {
    return [
        "min"   => min($angka),
        "max"   => max($angka),
        "rata"  => array_sum($angka) / count($angka),
        "jumlah" => count($angka)
    ];
}

$data = [85, 92, 78, 90, 88];
$stats = hitungStatistik($data);
echo "Min: {$stats['min']}, Max: {$stats['max']}, Rata-rata: {$stats['rata']}<br>";

// Type hinting (PHP 7+)
function tambah(int $a, int $b): int {
    return $a + $b;
}
echo tambah(5, 3) . "<br>";  // 8
// tambah("a", "b") — error! Type mismatch

// Nullable type
function cariUser(int $id): ?string {
    $users = [1 => "Andi", 2 => "Budi"];
    return $users[$id] ?? null;
}
?>

Anonymous Functions dan Arrow Functions

PHP — Anonymous Functions
<?php
// Anonymous function (closure)
$sapa = function($nama) {
    return "Halo, $nama!<br>";
};
echo $sapa("Andi");

// Arrow function (PHP 7.4+) — lebih singkat
$faktorial = 1;
$multiply = fn($x) => $x * 2;
echo $multiply(5) . "<br>";  // 10

// Menggunakan dengan array functions
$angka = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// Filter genap
$genap = array_filter($angka, fn($x) => $x % 2 === 0);
echo "Genap: " . implode(", ", $genap) . "<br>";  // 2, 4, 6, 8, 10

// Map — kuadratkan
$kuadrat = array_map(fn($x) => $x ** 2, $angka);
echo "Kuadrat: " . implode(", ", $kuadrat) . "<br>";  // 1, 4, 9, 16, 25...

// Reduce — jumlahkan
$total = array_reduce($angka, fn($carry, $item) => $carry + $item, 0);
echo "Total: $total<br>";  // 55

// Closure dengan use
$multiplier = 3;
$kalikan = fn($x) => $x * $multiplier; // otomatis capture $multiplier
echo $multiplier . " x 5 = " . $kalikan(5) . "<br>";  // 3 x 5 = 15
?>

8. Form Handling

Form handling adalah salah satu kekuatan utama PHP. PHP bisa menerima data dari form HTML melalui method GET atau POST.

Form HTML dengan PHP

PHP — Form GET
<!-- File: form_sederhana.html -->
<!DOCTYPE html>
<html>
<head><title>Form Sederhana</title></head>
<body>
  <h2>Form Pendaftaran</h2>
  <form action="proses.php" method="POST">
    <label>Nama: </label>
    <input type="text" name="nama" required><br><br>

    <label>Email: </label>
    <input type="email" name="email" required><br><br>

    <label>Umur: </label>
    <input type="number" name="umur" min="1" max="150"><br><br>

    <label>Gender: </label>
    <input type="radio" name="gender" value="L"> Laki-laki
    <input type="radio" name="gender" value="P"> Perempuan<br><br>

    <label>Hobi: </label>
    <input type="checkbox" name="hobi[]" value="coding"> Coding
    <input type="checkbox" name="hobi[]" value="gaming"> Gaming
    <input type="checkbox" name="hobi[]" value="membaca"> Membaca<br><br>

    <button type="submit">Daftar</button>
  </form>
</body>
</html>

Memproses Data Form

PHP — proses.php
<?php
// File: proses.php

// Cek apakah form dikirim dengan method POST
if ($_SERVER["REQUEST_METHOD"] === "POST") {

    // Mengambil data dari form (dengan sanitasi!)
    $nama  = htmlspecialchars(trim($_POST["nama"] ?? ""));
    $email = filter_input(INPUT_POST, "email", FILTER_SANITIZE_EMAIL);
    $umur  = intval($_POST["umur"] ?? 0);
    $gender = $_POST["gender"] ?? "";
    $hobi  = $_POST["hobi"] ?? [];

    // Validasi sederhana
    $errors = [];
    if (empty($nama))  $errors[] = "Nama wajib diisi";
    if (empty($email)) $errors[] = "Email wajib diisi";
    if ($umur < 1 || $umur > 150) $errors[] = "Umur tidak valid";

    if (empty($errors)) {
        echo "<h2>Pendaftaran Berhasil!</h2>";
        echo "<p>Nama: $nama</p>";
        echo "<p>Email: $email</p>";
        echo "<p>Umur: $umur tahun</p>";
        echo "<p>Gender: " . ($gender === "L" ? "Laki-laki" : "Perempuan") . "</p>";
        echo "<p>Hobi: " . implode(", ", $hobi) . "</p>";
    } else {
        echo "<h2>Error:</h2>";
        echo "<ul>";
        foreach ($errors as $err) {
            echo "<li>$err</li>";
        }
        echo "</ul>";
    }
} else {
    // Jika bukan POST, redirect ke form
    header("Location: form_sederhana.html");
    exit;
}
?>
⚠️ Peringatan Keamanan

Selalu sanitasi input dari pengguna menggunakan htmlspecialchars() untuk mencegah XSS, filter_input() untuk validasi email dan tipe data lain, dan prepared statements saat berinteraksi dengan database untuk mencegah SQL Injection. Jangan pernah mempercayai input dari pengguna!

9. Session dan Cookie

HTTP adalah protokol stateless — tidak ada memori antara request. Session dan Cookie digunakan untuk menyimpan data pengguna antar halaman.

Session

PHP — Session
<?php
// File: login.php
session_start(); // HARUS dipanggil sebelum output apapun

// Setelah proses login berhasil:
if ($loginBerhasil) {
    $_SESSION["user_id"] = $userId;
    $_SESSION["username"] = $username;
    $_SESSION["role"] = "admin";
    $_SESSION["login_time"] = time();

    header("Location: dashboard.php");
    exit;
}
?>

<?php
// File: dashboard.php
session_start(); // Memulai session di setiap halaman

// Cek apakah user sudah login
if (!isset($_SESSION["user_id"])) {
    header("Location: login.php");
    exit;
}

echo "Selamat datang, {$_SESSION['username']}!<br>";
echo "Role: {$_SESSION['role']}<br>";

// Menghapus session (logout)
// session_destroy();       // Hapus semua session
// unset($_SESSION["user_id"]); // Hapus session tertentu
?>

Cookie

PHP — Cookie
<?php
// Cookie disimpan di browser pengguna (client-side)

// Membuat cookie — setcookie("nama", "nilai", waktu_kedaluwarsa)
setcookie("tema", "dark", time() + (86400 * 30), "/");  // 30 hari
setcookie("bahasa", "id", time() + (86400 * 365), "/");  // 1 tahun

// Cookie dengan parameter keamanan
setcookie("token", "abc123", [
    "expires"  => time() + 3600,
    "path"     => "/",
    "domain"   => "example.com",
    "secure"   => true,      // hanya HTTPS
    "httponly"  => true,      // tidak bisa diakses JavaScript
    "samesite" => "Strict"   // mencegah CSRF
]);

// Membaca cookie
if (isset($_COOKIE["tema"])) {
    $tema = $_COOKIE["tema"];
    echo "Tema: $tema<br>";
}

// Menghapus cookie
setcookie("tema", "", time() - 3600, "/");  // set waktu lampau

// Perbedaan Session vs Cookie:
// Session: disimpan di server, lebih aman, hilang saat browser ditutup
// Cookie: disimpan di browser, bisa bertahan lama, kapasitas terbatas (4KB)
?>

10. Manipulasi String

PHP memiliki ratusan fungsi string built-in yang sangat berguna untuk memanipulasi teks.

PHP — String Functions
<?php
// Panjang string
echo strlen("Hello PHP");       // 9

// Ubah case
echo strtoupper("hello");       // HELLO
echo strtolower("WORLD");       // world
echo ucfirst("hello world");    // Hello world
echo ucwords("hello world");    // Hello World

// Pencarian
echo strpos("Hello World", "World");   // 6
echo strrpos("Hello Hello", "Hello");  // 6 (cari dari belakang)
echo str_contains("Hello PHP", "PHP"); // true (PHP 8+)
echo str_starts_with("Hello", "He");   // true (PHP 8+)
echo str_ends_with("Hello.php", ".php"); // true (PHP 8+)

// Penggantian
echo str_replace("World", "PHP", "Hello World"); // Hello PHP
echo str_ireplace("hello", "Hi", "Hello World"); // Hi World (case-insensitive)

// Pemotongan
echo substr("Indonesia", 0, 3);     // Ind
echo substr("Indonesia", -3);        // sia
echo substr("Indonesia", 4);         // nesia

// Padding dan trim
echo str_pad("42", 5, "0", STR_PAD_LEFT);  // 00042
echo trim("  Hello  ");                      // "Hello"
echo ltrim("  Hello");                       // "Hello  "
echo rtrim("Hello  ");                       // "  Hello"

// Format string
echo sprintf("Nama: %s, Umur: %d, IPK: %.2f", "Andi", 22, 3.75);
// Nama: Andi, Umur: 22, IPK: 3.75

// Join dan Split
$arr = ["PHP", "adalah", "hebat"];
echo implode(" ", $arr);            // PHP adalah hebat
print_r(explode(" ", "PHP adalah hebat")); // Array([0]=>PHP [1]=>adalah [2]=>hebat)

// HTML functions
echo htmlspecialchars("<script>alert('xss')</script>");
// &lt;script&gt;alert('xss')&lt;/script&gt;

echo nl2br("Baris 1\nBaris 2\nBaris 3"); // Mengubah \n menjadi <br>
?>

11. Error Handling

Error handling yang baik adalah kunci untuk membuat aplikasi PHP yang robust dan tidak mudah crash.

Try-Catch Exception

PHP — Error Handling
<?php
// Try-Catch untuk menangani exception
try {
    $file = fopen("data.json", "r");
    if (!$file) {
        throw new Exception("File tidak dapat dibuka!");
    }
    $content = file_get_contents("data.json");
    $data = json_decode($content, true);

    if ($data === null) {
        throw new Exception("JSON tidak valid!");
    }
} catch (FileNotFoundException $e) {
    echo "Error: File tidak ditemukan — " . $e->getMessage();
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
} finally {
    // Selalu dieksekusi, baik error maupun tidak
    if (isset($file) && $file) {
        fclose($file);
    }
    echo "Proses selesai.";
}

// Custom Exception
class SaldoTidakCukupException extends Exception {
    private float $saldo;
    private float $jumlah;

    public function __construct(float $saldo, float $jumlah) {
        $this->saldo = $saldo;
        $this->jumlah = $jumlah;
        parent::__construct("Saldo Rp$saldo kurang dari Rp$jumlah");
    }

    public function getSisa(): float {
        return $this->saldo - $this->jumlah;
    }
}

function tarikTunai(float $saldo, float $jumlah): float {
    if ($jumlah > $saldo) {
        throw new SaldoTidakCukupException($saldo, $jumlah);
    }
    return $saldo - $jumlah;
}

try {
    $sisa = tarikTunai(100000, 150000);
} catch (SaldoTidakCukupException $e) {
    echo "❌ " . $e->getMessage() . "<br>";
    echo "Kurang: Rp" . abs($e->getSisa());
}
// ❌ Saldo Rp100000 kurang dari Rp150000
// Kurang: Rp50000
?>

12. Quiz: Uji Pemahamanmu!

Setelah membaca tutorial di atas, jawablah 5 pertanyaan berikut untuk menguji pemahamanmu tentang PHP:

Pertanyaan 1: Bagaimana cara mendeklarasikan variabel di PHP?

a) var nama = "Budi";
b) $nama = "Budi";
c) let nama = "Budi";
d) nama = "Budi";

Pertanyaan 2: Apa perbedaan == dan === di PHP?

a) Tidak ada perbedaan
b) == membandingkan nilai saja, === membandingkan nilai DAN tipe data
c) == untuk angka, === untuk string
d) === lebih lambat dari ==

Pertanyaan 3: Fungsi apa yang digunakan untuk memulai session di PHP?

a) session_init()
b) start_session()
c) session_start()
d) begin_session()

Pertanyaan 4: Apa output dari kode berikut? echo count([1, [2, 3], 4]);

a) 4
b) 3
c) 5
d) Error

Pertanyaan 5: Operator apa yang digunakan untuk menangani nilai null di PHP 7+?

a) ?? (Null coalescing)
b) ?: (Elvis operator)
c) ?-> (Nullsafe operator)
d) Semua jawaban benar untuk menangani null
🔍 Zoom
100%
🎨 Tema