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 Dipelajari | Sintaks PHP relatif sederhana dan banyak tutorial tersedia di internet |
| Server-Side | Berjalan di server, kode sumber tidak terlihat oleh pengguna akhir |
| Kompatibel | Bisa digunakan dengan hampir semua web server dan database |
| Framework Berlimpah | Laravel, Symfony, CodeIgniter — pilihan framework yang sangat banyak |
| CMS Populer | WordPress, Drupal, Joomla dibangun dengan PHP |
| Gratis & Open Source | Bisa digunakan dan didistribusikan secara bebas |
| Komunitas Besar | Jutaan developer aktif, solusi mudah ditemukan untuk setiap masalah |
PHP vs Bahasa Web Lainnya
| Aspek | PHP | Python | Node.js |
|---|---|---|---|
| Tipe | Server-side scripting | General-purpose | Server-side JS runtime |
| Typing | Dynamic | Dynamic | Dynamic |
| Sintaks | 🟢 Mudah | 🟢 Sangat Mudah | 🟡 Sedang |
| Ekosistem Web | 🟢 Sangat Kaya | 🟡 Cukup | 🟢 Sangat Kaya |
| Hosting | 🟢 Hampir Semua | 🟡 Terbatas | 🟡 Terbatas |
| Cocok untuk | Web, CMS, E-commerce | AI, Data, Web | API, Realtime App |
┌───────────────────────────────────────────────────────┐ │ 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)
# 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)
# 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)
# 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 // 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 ?>
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
// 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 |
int | 42, -10, 0 | Bilangan bulat |
float | 3.14, -0.5 | Bilangan desimal |
bool | true, false | Boolean / logika |
array | [1, 2, 3] | Kumpulan data |
object | new stdClass() | Instance dari class |
null | null | Tipe kosong |
resource | fopen(...) | Referensi resource eksternal |
String di PHP
<?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
// 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 — 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
$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 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
$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
// 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 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 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
<!-- 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
// 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;
}
?>
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
// 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 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
// 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>");
// <script>alert('xss')</script>
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
// 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: