Fungsi

Membuat fungsi, parameter bertipe, nilai default, named arguments, variadic, arrow function, closure, dan cakupan variabel.

Part 6 dari 22 ± 50 menit Gratis

Mengapa fungsi?

Fungsi membungkus sepotong logika dengan nama sehingga bisa dipakai ulang, diuji, dan dibaca dengan mudah. Prinsip DRY (Don't Repeat Yourself): jika kamu menyalin kode yang sama tiga kali, jadikan fungsi.

function sapa(string $nama): string
{
    return "Halo, {$nama}!";
}

echo sapa('Sari');     // Halo, Sari!

Bagian-bagiannya: kata kunci function, nama, parameter dengan tipe, tipe kembalian setelah :, dan return untuk mengembalikan nilai.

Nilai default & named arguments (PHP 8.0)

function hitungHarga(int $harga, float $diskon = 0.0, float $ppn = 0.11): float
{
    return $harga * (1 - $diskon) * (1 + $ppn);
}

hitungHarga(100000);                       // pakai default
hitungHarga(100000, 0.1);                  // posisi
hitungHarga(harga: 100000, ppn: 0.0);      // named: urutan bebas, lewati yang default

Named arguments membuat pemanggilan mudah dibaca ("ppn: 0.0" jelas artinya) dan memungkinkan melewati parameter opsional di tengah. Setelah memakai argumen bernama, sisanya harus bernama juga.

Tipe nullable, union, dan void

function cariUser(int $id): ?array {}          // array atau null
function ubah(int|string $id): int|false {}    // union type (8.0)
function catat(string $pesan): void {}         // tidak mengembalikan apa pun

Variadic & spread

function jumlah(int ...$angka): int
{
    return array_sum($angka);
}
echo jumlah(1, 2, 3);        // 6
echo jumlah(...[4, 5, 6]);   // spread array menjadi argumen

Arrow function & closure

$ganda = fn (int $x): int => $x * 2;           // arrow: satu ekspresi, auto-capture

$pajak = 0.11;
$denganPajak = function (int $harga) use ($pajak): float {
    return $harga * (1 + $pajak);                // closure: variabel luar via use
};

Arrow function menangkap variabel luar berdasarkan nilai secara otomatis, tetapi hanya boleh berisi satu ekspresi. Untuk logika lebih panjang, gunakan closure biasa dengan use.

Cakupan variabel (scope)

Variabel di dalam fungsi bersifat lokal — tidak terlihat dari luar, dan variabel luar tidak terlihat dari dalam. Hindari global; kirim data lewat parameter dan kembalikan lewat return. Variabel static mempertahankan nilainya antar pemanggilan:

function hitungPanggilan(): int
{
    static $n = 0;
    return ++$n;
}

First-class callable (PHP 8.1)

$panjang = strlen(...);                    // referensi ke fungsi
$hasil = array_map(strtoupper(...), ['a', 'b']);   // ['A', 'B']

Fungsi sebagai nilai

Fungsi bisa disimpan di variabel, dikirim sebagai argumen, dan dikembalikan dari fungsi lain — fondasi array_map, usort, middleware, dan event listener di framework.

Praktik baik

  • Satu fungsi, satu tugas; nama berupa kata kerja (hitungTotal, kirimEmail).
  • Selalu beri tipe parameter & kembalian.
  • Hindari efek samping tersembunyi; lebih baik kembalikan nilai daripada mengubah variabel global.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X