Tutorial PHP Dasar

Panduan lengkap mempelajari PHP dari nol untuk pemula

1. Pengenalan PHP

1

Apa itu PHP

PHP (PHP: Hypertext Preprocessor) adalah bahasa pemrograman server-side yang digunakan untuk membuat website dinamis.

Karakteristik PHP:

  • Server-side scripting language (dijalankan di server)
  • Open source dan gratis
  • Support berbagai database (MySQL, PostgreSQL, MongoDB)
  • Mudah dipelajari oleh pemula
  • Digunakan oleh jutaan website (WordPress, Facebook, Instagram)
2

Perbedaan Client-side dan Server-side

Perbandingan
CLIENT-SIDE:
- JavaScript, HTML, CSS
- Dijalankan di browser pengguna
- Tidak bisa akses database langsung
- Lebih cepat (tidak perlu request ke server)

SERVER-SIDE:
- PHP, Python, Node.js, Java
- Dijalankan di server
- Bisa akses database dan file
- Lebih aman (kode tidak terlihat di browser)
3

Keuntungan Belajar PHP

  • Mudah dipelajari dibanding bahasa backend lain
  • Banyak framework populer (Laravel, Symfony, CodeIgniter)
  • Permintaan kerja tinggi di industry
  • Documentasi lengkap dan komunitas besar
  • Bisa hosting dengan harga murah
  • Setup mudah tanpa konfigurasi rumit

2. Requirements dan Setup

1

Kebutuhan Software

Untuk memulai belajar PHP, Anda memerlukan:

  • Web Server (Apache atau Nginx)
  • PHP Interpreter (PHP 8.0+)
  • Database Server (MySQL atau MariaDB)
  • Text Editor atau IDE (VS Code, Sublime Text, PHPStorm)
Solusi mudah: Install XAMPP yang sudah include semua diatas!
2

Install XAMPP

Langkah Instalasi XAMPP
LANGKAH 1: Download
1. Buka https://www.apachefriends.org/
2. Download XAMPP untuk Windows (PHP 8.2+)
3. Jalankan file installer

LANGKAH 2: Instalasi
1. Pilih folder: C:\xampp (default)
2. Pilih komponen: Apache, MySQL, PHP
3. Klik Next hingga selesai

LANGKAH 3: Verifikasi
1. Buka XAMPP Control Panel
2. Klik "Start" untuk Apache
3. Klik "Start" untuk MySQL
4. Tunggu status menjadi "Running" (hijau)
3

Setup Text Editor (VS Code)

Setup VS Code
LANGKAH 1: Download dan Install
1. Buka https://code.visualstudio.com/
2. Download untuk Windows
3. Jalankan installer

LANGKAH 2: Install Extensions
1. Buka VS Code
2. Klik Extensions (icon kotak di kiri)
3. Install extensions:
   - PHP Intelephense
   - PHP Extension Pack
   - REST Client

LANGKAH 3: Setup Local Server
1. Install extension "Live Server"
2. Atau gunakan: php -S localhost:8000
4

Buat File PHP Pertama

Langkah
1. Buat folder: C:\xampp\htdocs\belajar-php
2. Buat file: index.php
3. Tulis kode PHP pertama
4. Buka di browser: http://localhost/belajar-php/index.php

3. Syntax dan Pengenalan

1

Tag PHP Dasar

Setiap code PHP harus dimulai dengan <?php dan diakhiri dengan ?>

index.php
<?php
  echo "Halo, Dunia!";
?>
Tag penutup ?> opsional jika hanya PHP di file tersebut
2

Statement dan Comment

Statement dan Comment
<?php
// Ini adalah single line comment
# Ini juga single line comment

/*
Ini adalah multi-line comment
Bisa lebih dari satu baris
*/

echo "Statement harus diakhiri dengan semicolon;
echo "Ini string dengan double quote";
echo 'Ini string dengan single quote';

// Print juga bisa digunakan seperti echo
print "Ini menggunakan print";
?>
3

Output dengan echo dan print

Output
<?php
// echo bisa output multiple parameter
echo "Halo", " ", "Dunia"; // Output: Halo Dunia

// print hanya satu parameter
print "Ini print"; // Output: Ini print

// Bisa juga tanpa parenthesis
echo("String");
print("String");

// Menggabung string dengan dot (.)
echo "Nama saya " . "Ahmad" . " Hidayat";
// Output: Nama saya Ahmad Hidayat
?>
4

Escape Character

Escape Sequences
<?php
echo "Baris pertama\nBaris kedua"; // \n = newline
echo "Tab\tspasi"; // \t = tab
echo "Kutip \" dalam string"; // \" = double quote
echo 'Kutip \' dalam string'; // \' = single quote
echo "Backslash \\"; // \\ = backslash

// HTML di echo
echo "<h1>Ini heading</h1>";
echo "<br>"; // Line break HTML
?>

4. Variabel dan Naming

1

Pengenalan Variabel

Variabel adalah tempat menyimpan data yang bisa digunakan ulang.

Variabel Dasar
<?php
// Deklarasi dan inisialisasi variabel
$nama = "Ahmad";
$umur = 20;
$tinggi = 170.5;

// Menggunakan variabel
echo "Nama saya adalah " . $nama;
echo "Umur saya " . $umur . " tahun";

// Update nilai variabel
$nama = "Budi"; // sekarang $nama = "Budi"
echo $nama;
?>
2

Aturan Naming Variabel

Aturan
BENAR:
$nama = "Ahmad";           // Huruf
$nama_lengkap = "Ahmad";   // Underscore
$namaLengkap = "Ahmad";    // camelCase
$_nama = "Ahmad";          // Underscore di awal
$nama2 = "Ahmad";          // Angka (tidak di awal)

SALAH:
$2nama = "Ahmad";          // Tidak boleh mulai dengan angka
$nama-lengkap = "Ahmad";   // Tidak boleh dash/minus
$nama lengkap = "Ahmad";   // Tidak boleh spasi
$nama@lengkap = "Ahmad";   // Tidak boleh simbol khusus

CASE SENSITIVE:
$nama = "Ahmad";
$Nama = "Budi";
$NAMA = "Citra";
// Ketiga variabel di atas BERBEDA
3

Konvensi Naming

  • Gunakan camelCase untuk nama variabel (namaLengkap)
  • Gunakan snake_case untuk array/object ($user_data)
  • Hindari single letter kecuali untuk loop ($i, $x)
  • Gunakan nama yang deskriptif ($nama_pengguna bukan $n)

5. Tipe Data

1

Tipe Data String

String
<?php
// Double quote - bisa interpolasi variabel
$nama = "Ahmad";
echo "Halo $nama"; // Output: Halo Ahmad
echo "Halo {$nama}"; // Output: Halo Ahmad

// Single quote - literal
echo 'Halo $nama'; // Output: Halo $nama (literal)

// String concatenation
$kata1 = "Selamat";
$kata2 = "Pagi";
echo $kata1 . " " . $kata2; // Output: Selamat Pagi

// String dengan heredoc
$text = <<<EOT
Ini adalah
string multiline
dengan heredoc
EOT;

// String dengan nowdoc (seperti single quote)
$text = <<<'EOT'
Ini tidak akan interpolasi $variabel
EOT;

// Fungsi string
echo strlen("Ahmad"); // 5 - panjang string
echo strtoupper("ahmad"); // AHMAD - uppercase
echo strtolower("AHMAD"); // ahmad - lowercase
echo str_replace("Ahmad", "Budi", "Halo Ahmad"); // Halo Budi
?>
2

Tipe Data Integer dan Float

Angka
<?php
// Integer - bilangan bulat
$umur = 20;
$tahun = 2025;
$suhu = -5;

// Float - bilangan desimal
$tinggi = 170.5;
$berat = 65.75;
$pi = 3.14159;

// Operasi matematika
$a = 10;
$b = 3;
echo $a + $b; // 13
echo $a - $b; // 7
echo $a * $b; // 30
echo $a / $b; // 3.33...
echo $a % $b; // 1 (sisa bagi/modulo)
echo $a ** $b; // 1000 (pangkat)

// Fungsi math
echo abs(-5); // 5 - absolute value
echo round(3.6); // 4 - pembulatan
echo floor(3.9); // 3 - pembulatan ke bawah
echo ceil(3.1); // 4 - pembulatan ke atas
echo max(10, 20, 5); // 20 - nilai terbesar
echo min(10, 20, 5); // 5 - nilai terkecil
echo rand(1, 100); // Random 1-100

// Cek tipe data
var_dump($umur); // Output: int(20)
var_dump($tinggi); // Output: float(170.5)
?>
3

Tipe Data Boolean

Boolean
<?php
// Boolean - true atau false
$aktif = true;
$admin = false;

// Hasil perbandingan adalah boolean
$umur = 20;
echo $umur > 18; // true (output: 1)
echo $umur < 18; // false (output: empty)

// Fungsi yang return boolean
echo is_int(20); // true
echo is_float(20.5); // true
echo is_string("Ahmad"); // true
echo is_bool(true); // true
echo is_array([1, 2, 3]); // true
echo is_null($undefined); // true

// Boolean di echo menampilkan 1 atau nothing
echo true; // 1
echo false; // (empty)

// Gunakan var_dump untuk melihat dengan jelas
var_dump(true); // bool(true)
var_dump(false); // bool(false)
?>
4

Tipe Data NULL

NULL
<?php
// NULL - variabel tanpa nilai
$nama = NULL;
$kosong = null; // case insensitive

// Variabel yang tidak didefinisikan otomatis NULL
// echo $undefined; // Error (undefined variable)

// Unset variabel
$umur = 20;
unset($umur);
// $umur sekarang tidak ada

// Cek apakah variabel NULL
$data = null;
echo is_null($data); // true

// Operasi dengan NULL
$hasil = null + 5; // 5 (NULL = 0 dalam operasi)
?>
5

Type Casting

Konversi Tipe
<?php
// Casting ke integer
$angka = (int)"20"; // 20
$desimal = (int)20.9; // 20
$bool = (int)true; // 1
$bool = (int)false; // 0

// Casting ke float
$angka = (float)"20.5"; // 20.5
$bilangan = (float)20; // 20.0

// Casting ke string
$angka = (string)20; // "20"
$bool = (string)true; // "1"

// Casting ke boolean
$angka = (bool)0; // false
$angka = (bool)1; // true
$angka = (bool)""; // false
$angka = (bool)"text"; // true

// Casting ke array
$string = (array)"Ahmad"; // Array ( [0] => Ahmad )

// Automatic type juggling
echo "20" + 5; // 25 (string + int = int)
echo "20x" + 5; // 25 (string numeric dibaca)
echo "x20" + 5; // 5 (string non-numeric = 0)
?>

6. Operator

Aritmatika

+, -, *, /, %, ** untuk operasi matematika

Perbandingan

==, ===, !=, !==, <, >, <=, >= untuk membandingkan

Logika

&&, ||, ! untuk operasi boolean

Assignment

=, +=, -=, *=, /= untuk assign nilai

1

Operator Aritmatika

Aritmatika
<?php
$a = 10;
$b = 3;

echo $a + $b; // 13 - Penjumlahan
echo $a - $b; // 7 - Pengurangan
echo $a * $b; // 30 - Perkalian
echo $a / $b; // 3.33... - Pembagian
echo $a % $b; // 1 - Modulo (sisa bagi)
echo $a ** $b; // 1000 - Pangkat
echo -$a; // -10 - Negasi

// Increment dan Decrement
$x = 5;
echo ++$x; // 6 - Pre-increment (increment dahulu)
echo $x++; // 6 - Post-increment (output dahulu)
echo $x; // 7

$y = 5;
echo --$y; // 4 - Pre-decrement
echo $y--; // 4 - Post-decrement
echo $y; // 3
?>
2

Operator Perbandingan

Perbandingan
<?php
$a = 10;
$b = 20;

echo $a == $b; // false - sama dengan
echo $a != $b; // true - tidak sama dengan
echo $a < $b; // true - kurang dari
echo $a > $b; // false - lebih dari
echo $a <= $b; // true - kurang dari sama dengan
echo $a >= $b; // false - lebih dari sama dengan

// Strict comparison (tipe data juga dibandingkan)
echo 10 == "10"; // true (value sama)
echo 10 === "10"; // false (type berbeda)
echo 10 !== "10"; // true

// Spaceship operator (<=>)
echo 10 <=> 20; // -1 (10 lebih kecil)
echo 20 <=> 20; // 0 (sama)
echo 30 <=> 20; // 1 (30 lebih besar)

// Null coalescing (??)
$nama = null;
echo $nama ?? "Tidak ada"; // Output: Tidak ada
?>
3

Operator Logika

Logika
<?php
$a = true;
$b = false;

// AND operator
echo $a && $b; // false
echo $a and $b; // false (alternatif)

// OR operator
echo $a || $b; // true
echo $a or $b; // true (alternatif)

// NOT operator
echo !$a; // false
echo !$b; // true

// XOR operator
echo $a xor $b; // true

// Contoh di kondisi
$umur = 20;
$kendaraan = true;

if ($umur > 18 && $kendaraan) {
    echo "Bisa naik mobil"; // Dicetak
}

if ($umur < 18 || $kendaraan) {
    echo "Bisa menggunakan kendaraan"; // Dicetak
}
?>
4

Operator Assignment

Assignment
<?php
$x = 10;

$x = 20; // x = 20
$x += 5; // x = x + 5 = 25
$x -= 5; // x = x - 5 = 20
$x *= 2; // x = x * 2 = 40
$x /= 4; // x = x / 4 = 10
$x %= 3; // x = x % 3 = 1

// String concatenation assignment
$nama = "Ahmad";
$nama .= " Hidayat"; // nama = nama . " Hidayat"
echo $nama; // Ahmad Hidayat

// Ternary operator (shorthand if-else)
$umur = 20;
$status = ($umur > 18) ? "Dewasa" : "Anak-anak";
echo $status; // Dewasa

// Elvis operator (shorthand ternary)
$nama = null;
echo $nama ?: "Tidak ada"; // Tidak ada
?>

7. Array

1

Array Indexed

Indexed Array
<?php
// Deklarasi array indexed
$buah = ["Apel", "Pisang", "Jeruk"];

// Akses elemen
echo $buah[0]; // Apel
echo $buah[1]; // Pisang
echo $buah[2]; // Jeruk

// Tambah elemen
$buah[3] = "Mangga";
$buah[] = "Nanas"; // Otomatis index 4

// Loop array
foreach ($buah as $item) {
    echo $item . "\n";
}

// Loop dengan index
foreach ($buah as $index => $item) {
    echo $index . ": " . $item . "\n";
}

// Fungsi array
echo count($buah); // 5 - jumlah elemen
echo in_array("Apel", $buah); // true - cek keberadaan

// Array functions
$buah2 = ["Manggis", "Duku"];
$semua = array_merge($buah, $buah2); // Gabung array
sort($buah); // Sort ascending
rsort($buah); // Sort descending
?>
2

Array Associative

Associative Array
<?php
// Deklarasi dengan key-value
$siswa = [
    "nama" => "Ahmad",
    "umur" => 20,
    "kelas" => "XII RPL"
];

// Akses dengan key
echo $siswa["nama"]; // Ahmad
echo $siswa["umur"]; // 20

// Tambah elemen
$siswa["email"] = "ahmad@sekolah.id";

// Loop
foreach ($siswa as $key => $value) {
    echo $key . ": " . $value . "\n";
}

// Function array associative
echo isset($siswa["nama"]); // true
echo array_key_exists("nama", $siswa); // true
echo in_array("Ahmad", $siswa); // true

// Get keys
$keys = array_keys($siswa);
var_dump($keys); // ["nama", "umur", "kelas", "email"]

// Get values
$values = array_values($siswa);
var_dump($values); // ["Ahmad", 20, "XII RPL", "ahmad@sekolah.id"]
?>
3

Array Multidimensi

Multidimensional Array
<?php
// Array 2D
$siswa = [
    ["Ahmad", "20", "XII RPL"],
    ["Budi", "19", "XII TKJ"],
    ["Citra", "20", "XII RPL"]
];

echo $siswa[0][0]; // Ahmad
echo $siswa[1][1]; // 19
echo $siswa[2][2]; // XII RPL

// Array 2D dengan associative
$siswa = [
    [
        "nama" => "Ahmad",
        "umur" => 20,
        "kelas" => "XII RPL"
    ],
    [
        "nama" => "Budi",
        "umur" => 19,
        "kelas" => "XII TKJ"
    ]
];

echo $siswa[0]["nama"]; // Ahmad
echo $siswa[1]["umur"]; // 19

// Loop multidimensi
foreach ($siswa as $item) {
    echo "Nama: " . $item["nama"] . "\n";
    echo "Umur: " . $item["umur"] . "\n";
}
?>
4

Array Functions

Fungsi-fungsi Array
<?php
$angka = [3, 1, 4, 1, 5, 9, 2, 6];

// Sorting
sort($angka); // Ascending
rsort($angka); // Descending
asort($angka); // Ascending (maintain index)
arsort($angka); // Descending (maintain index)
ksort($array); // Sort by key

// Array functions
echo count($angka); // 8 - jumlah elemen
echo array_sum($angka); // 31 - jumlah nilai
echo array_product($angka); // 97920 - perkalian

// Searching
echo in_array(5, $angka); // true
echo array_search(5, $angka); // 4 - index

// Manipulasi
$flip = array_flip($angka); // Reverse key-value
$unique = array_unique($angka); // Remove duplicate
$reverse = array_reverse($angka); // Reverse order

// Map dan filter
$times2 = array_map(function($x) {
    return $x * 2;
}, $angka);

$genap = array_filter($angka, function($x) {
    return $x % 2 == 0;
});

// Reduce
$total = array_reduce($angka, function($carry, $item) {
    return $carry + $item;
}, 0); // 31
?>

8. Kontrol Alur Program

1

If, Elseif, Else

Percabangan If
<?php
$umur = 20;

// If sederhana
if ($umur > 18) {
    echo "Anda dewasa";
}

// If-else
if ($umur > 18) {
    echo "Anda dewasa";
} else {
    echo "Anda masih anak-anak";
}

// If-elseif-else
if ($umur < 13) {
    echo "Anak-anak";
} elseif ($umur < 18) {
    echo "Remaja";
} elseif ($umur < 60) {
    echo "Dewasa";
} else {
    echo "Lansia";
}

// Multiple conditions
$umur = 20;
$kendaraan = true;

if ($umur > 18 && $kendaraan) {
    echo "Boleh naik mobil";
}

if ($umur > 18 || $kendaraan) {
    echo "Boleh menggunakan kendaraan";
}

// Nested if
if ($umur > 18) {
    if ($kendaraan) {
        echo "Boleh naik mobil pribadi";
    } else {
        echo "Boleh naik kendaraan umum";
    }
}
?>
2

Switch Statement

Switch
<?php
$hari = "Selasa";

switch ($hari) {
    case "Senin":
        echo "Awal minggu";
        break;
    case "Selasa":
    case "Rabu":
    case "Kamis":
        echo "Tengah minggu";
        break;
    case "Jumat":
        echo "Hampir weekend";
        break;
    case "Sabtu":
    case "Minggu":
        echo "Weekend";
        break;
    default:
        echo "Hari tidak valid";
}

// Switch dengan condition complex
$nilai = 85;

switch (true) {
    case $nilai >= 90:
        echo "A";
        break;
    case $nilai >= 80:
        echo "B";
        break;
    case $nilai >= 70:
        echo "C";
        break;
    default:
        echo "D";
}
?>
3

Loop For

For Loop
<?php
// For loop standar
for ($i = 1; $i <= 5; $i++) {
    echo $i . " ";
} // Output: 1 2 3 4 5

// For loop descending
for ($i = 5; $i >= 1; $i--) {
    echo $i . " ";
} // Output: 5 4 3 2 1

// For loop dengan step
for ($i = 0; $i <= 10; $i += 2) {
    echo $i . " ";
} // Output: 0 2 4 6 8 10

// Nested for loop (tabel perkalian)
for ($i = 1; $i <= 3; $i++) {
    for ($j = 1; $j <= 3; $j++) {
        echo $i * $j . " ";
    }
    echo "\n";
}

// Break dan continue
for ($i = 1; $i <= 10; $i++) {
    if ($i == 5) {
        break; // Keluar dari loop
    }
    if ($i % 2 == 0) {
        continue; // Skip ke iterasi berikutnya
    }
    echo $i . " ";
} // Output: 1 3
?>
4

Loop While dan Do-While

While Loop
<?php
// While loop
$i = 1;
while ($i <= 5) {
    echo $i . " ";
    $i++;
} // Output: 1 2 3 4 5

// While dengan break
$i = 1;
while (true) {
    echo $i . " ";
    if ($i == 5) {
        break;
    }
    $i++;
}

// Do-while (minimal 1x dijalankan)
$i = 1;
do {
    echo $i . " ";
    $i++;
} while ($i <= 5); // Output: 1 2 3 4 5

// Do-while dengan kondisi false
$i = 10;
do {
    echo "Dijalankan 1x meski kondisi false\n";
} while ($i < 5);

// Foreach loop (untuk array)
$buah = ["Apel", "Pisang", "Jeruk"];
foreach ($buah as $item) {
    echo $item . "\n";
}

// Foreach dengan key dan value
$siswa = ["Ahmad" => 90, "Budi" => 85, "Citra" => 92];
foreach ($siswa as $nama => $nilai) {
    echo $nama . ": " . $nilai . "\n";
}
?>

9. Fungsi

1

Pengenalan Fungsi

Fungsi Dasar
<?php
// Deklarasi fungsi sederhana
function sapaNama() {
    echo "Halo, dunia!";
}

// Memanggil fungsi
sapaNama(); // Output: Halo, dunia!

// Fungsi dengan parameter
function greeting($nama) {
    echo "Halo, " . $nama;
}

greeting("Ahmad"); // Output: Halo, Ahmad
greeting("Budi"); // Output: Halo, Budi

// Fungsi dengan multiple parameter
function jumlah($a, $b) {
    return $a + $b;
}

echo jumlah(5, 3); // 8

// Fungsi dengan default parameter
function sapa($nama = "Teman") {
    echo "Halo, " . $nama;
}

sapa(); // Output: Halo, Teman
sapa("Ahmad"); // Output: Halo, Ahmad
?>
2

Return Value

Return
<?php
// Fungsi return nilai
function tambah($a, $b) {
    return $a + $b;
}

$hasil = tambah(5, 3);
echo $hasil; // 8

// Fungsi return string
function salam($nama) {
    return "Selamat datang, " . $nama;
}

echo salam("Ahmad"); // Selamat datang, Ahmad

// Fungsi return array
function getData() {
    return ["Ahmad", 20, "XII RPL"];
}

$data = getData();
echo $data[0]; // Ahmad

// Fungsi return multiple dengan list
function getUserData() {
    return ["Ahmad", "ahmad@gmail.com", 90];
}

list($nama, $email, $nilai) = getUserData();
echo $nama; // Ahmad

// Atau dengan array destructuring (PHP 7.1+)
[$nama, $email, $nilai] = getUserData();

// Fungsi return boolean
function isBilangan($var) {
    return is_numeric($var);
}

echo isBilangan(20); // 1 (true)
echo isBilangan("abc"); // (empty/false)
?>
3

Type Hinting dan Return Type

Type Declaration
<?php
// Type hinting untuk parameter
function jumlah(int $a, int $b): int {
    return $a + $b;
}

echo jumlah(5, 3); // 8
// jumlah(5, "3"); // Error

// Type hinting string
function greeting(string $nama): string {
    return "Halo, " . $nama;
}

echo greeting("Ahmad"); // Halo, Ahmad

// Type hinting array
function printArray(array $data): void {
    foreach ($data as $item) {
        echo $item . " ";
    }
}

printArray([1, 2, 3]); // 1 2 3

// Nullable type
function profile(?string $nama): ?string {
    if ($nama == null) {
        return "Tidak ada nama";
    }
    return "Nama: " . $nama;
}

echo profile(null); // Tidak ada nama
echo profile("Ahmad"); // Nama: Ahmad

// Union type (PHP 8.0+)
function proses(int|string $data): void {
    if (is_int($data)) {
        echo "Angka: " . $data;
    } else {
        echo "String: " . $data;
    }
}

proses(20); // Angka: 20
proses("Ahmad"); // String: Ahmad
?>
4

Variable Functions dan Anonymous Functions

Advanced Functions
<?php
// Variable functions
function greeting() {
    echo "Halo!";
}

$func = "greeting";
$func(); // Halo! - memanggil via variable

// Anonymous function (closure)
$greeting = function($nama) {
    return "Halo, " . $nama;
};

echo $greeting("Ahmad"); // Halo, Ahmad

// Arrow function (PHP 7.4+)
$tambah = fn($a, $b) => $a + $b;
echo $tambah(5, 3); // 8

// Callback function
function prosesArray(array $data, $callback) {
    foreach ($data as $item) {
        $callback($item);
    }
}

prosesArray([1, 2, 3], function($item) {
    echo $item . " ";
}); // 1 2 3

// Use variable dari parent scope
$multiplier = 2;
$kali = function($x) use ($multiplier) {
    return $x * $multiplier;
};

echo $kali(5); // 10
?>
5

Variadic Functions dan Spread Operator

Variable Arguments
<?php
// Fungsi dengan parameter unlimited
function jumlahSemua(...$angka) {
    $total = 0;
    foreach ($angka as $num) {
        $total += $num;
    }
    return $total;
}

echo jumlahSemua(1, 2, 3); // 6
echo jumlahSemua(1, 2, 3, 4, 5); // 15

// Mix parameter tetap dan variadic
function greeting($prefix, ...$nama) {
    foreach ($nama as $n) {
        echo $prefix . " " . $n . "\n";
    }
}

greeting("Halo", "Ahmad", "Budi", "Citra");

// Spread operator
$angka = [1, 2, 3];
echo jumlahSemua(...$angka); // 6

// Spread untuk merge array
$array1 = [1, 2, 3];
$array2 = [4, 5, 6];
$merged = [...$array1, ...$array2];
var_dump($merged); // [1, 2, 3, 4, 5, 6]
?>

Kesimpulan dan Langkah Berikutnya

1

Ringkasan Materi

  • Pengenalan PHP dan setup awal
  • Syntax dasar dan statement
  • Variabel dan naming convention
  • Tipe data: String, Number, Boolean, NULL
  • Operator aritmatika, perbandingan, logika, assignment
  • Array indexed, associative, multidimensional
  • Kontrol alur: if-else, switch, for, while, foreach
  • Fungsi, return, type hinting, anonymous functions
2

Langkah Selanjutnya

Topik lanjutan untuk memperdalam kemampuan PHP:

  1. OOP (Object Oriented Programming) - Class dan Object
  2. String Functions - Manipulasi string
  3. File Handling - Baca/tulis file
  4. Regular Expression - Pattern matching
  5. Session dan Cookie - Menyimpan data user
  6. Database - MySQL dan MySQLi
  7. Form Processing - GET dan POST
  8. Error Handling - Try-catch exception
  9. PHP dengan Framework - Laravel, CodeIgniter
  10. API Development - RESTful API
3

Tips Belajar

  • Praktik secara teratur dengan membuat mini project
  • Buat catatan dari setiap materi
  • Jangan hanya membaca, tapi ketik ulang kode
  • Eksperimen dengan mengubah-ubah nilai dan kondisi
  • Gunakan var_dump() untuk debug
  • Baca error message dengan seksama
  • Join komunitas programmer untuk berbagi pengalaman
  • Buat project dari nol dan deploy ke server
4

Resources Berguna

Link Dokumentasi
Official PHP Documentation:
https://www.php.net/docs.php

PHP Manual:
https://www.php.net/manual/en/

W3Schools PHP Tutorial:
https://www.w3schools.com/php/

PHP The Right Way:
https://phptherightway.com/

Stack Overflow (Q&A):
https://stackoverflow.com (tag: php)