dasarfungsiPemula3 mnt baca

Fungsi Dasar

Bungkus kode berulang jadi fungsi: parameter, return, dan nilai default.

Analogi: Resep Masakan

Bayangkan kamu punya resep "sambal favorit" yang dipakai di 10 masakan berbeda. Tanpa resep tertulis, kamu harus menghafal dan mengulang langkahnya 10 kali, dan kalau takaran berubah kamu perbaiki 10 tempat. Fungsi adalah "resep tertulis" itu: sekumpulan langkah yang diberi nama, bisa dipanggil kapan saja, dan diperbaiki cukup di satu tempat.

Kenapa Fungsi Ada?

Tiga alasan utama. Pertama, menghindari pengulangan (prinsip DRY: Don't Repeat Yourself): kode yang dipakai 5 kali ditulis sekali sebagai fungsi, dipanggil 5 kali. Kedua, keterbacaan: hitungDiskon($harga) jauh lebih jelas daripada 10 baris rumus yang tersebar. Ketiga, pengujian: fungsi yang kecil mudah dites satu per satu.

php
<?php
// Contoh 1: fungsi paling sederhana, tanpa input tanpa output
function sapa() {
    echo "Selamat datang di tokoku!<br>";
}

sapa();   // panggil: kode di dalam fungsi dijalankan
sapa();   // panggil lagi: tidak perlu tulis ulang

Kata kunci function, diikuti nama, tanda kurung, dan blok kode. Memanggil fungsi semudah menulis namanya plus ().

php
<?php
// Contoh 2: fungsi dengan parameter dan return (pola yang paling dipakai)
function hitungDiskon($harga, $persen) {
    $potongan = $harga * ($persen / 100);
    $bayar = $harga - $potongan;
    return $bayar;   // kembalikan hasil ke pemanggil
}

$bayar1 = hitungDiskon(100000, 10);   // 90000
$bayar2 = hitungDiskon(50000, 20);    // 40000
echo "Bayar 1: Rp$bayar1, Bayar 2: Rp$bayar2";

Parameter ($harga, $persen) adalah "lubang input" resep: nilai yang dimasukkan pemanggil. Return adalah "hasil masakan": nilai yang dikembalikan fungsi ke baris pemanggil. Bedakan dengan echo: echo langsung menampilkan ke layar, return menyerahkan nilai agar bisa dipakai lanjut (disimpan, dihitung lagi, digabung).

php
<?php
// Contoh 2 lanjutan: return vs echo, kenapa return lebih fleksibel
function luasPersegiEcho($sisi) {
    echo $sisi * $sisi;   // langsung tampil, tidak bisa dipakai lagi
}

function luasPersegi($sisi) {
    return $sisi * $sisi;   // hasilnya bisa dipakai ulang
}

$total = luasPersegi(4) + luasPersegi(5);   // 16 + 25 = 41, bisa!
echo "Total luas: $total";

Kesalahan Umum Pemula

Salah: lupa return sehingga fungsi menghasilkan null.

php
<?php
function tambah($a, $b) {
    $hasil = $a + $b;
    // SALAH: tidak ada return!
}
$jumlah = tambah(3, 4);
var_dump($jumlah);   // NULL, bukan 7!

Tanpa return, fungsi mengembalikan null secara diam-diam. Benar: akhiri fungsi dengan return nilai yang diinginkan. Kebiasaan: setiap fungsi yang "menghitung sesuatu" harus me-return hasilnya.

Salah: memakai variabel luar di dalam fungsi tanpa oper.

php
<?php
$diskon = 10;
function hitung($harga) {
    return $harga - ($harga * $diskon / 100);   // SALAH: $diskon tidak dikenal!
}

Variabel di luar fungsi tidak otomatis terlihat di dalam fungsi (disebut scope). Benar: kirim lewat parameter: function hitung($harga, $diskon). (Ada kata kunci global, tapi hindari: membuat kode sulit dilacak.)

Salah: nama fungsi bentrok dengan fungsi bawaan PHP.

php
<?php
function strlen($teks) {   // SALAH: strlen sudah ada di PHP!

PHP punya ribuan fungsi bawaan. Sebelum menamai fungsi, pastikan namanya belum dipakai. Error "Cannot redeclare" adalah tandanya.

Merancang Fungsi yang Baik

Fungsi yang baik punya tiga ciri: satu tugas (hitung diskon saja, bukan hitung + simpan + kirim email), nama jujur (hitungDiskon, bukan proses1), dan tanpa efek samping tersembunyi (tidak mengubah variabel global diam-diam).

Uji cepat: bisakah kamu menjelaskan fungsi dalam satu kalimat tanpa kata "dan"? "Fungsi ini menghitung diskon" lolos. "Fungsi ini menghitung diskon dan menyimpan ke database dan mengirim notifikasi" gagal: pecah jadi tiga fungsi.

php
<?php
// Contoh fungsi yang dirancang baik: validasi + hitung terpisah
function validasiUmur(int $umur): bool {
    return $umur >= 0 && $umur <= 120;
}

function kategoriUmur(int $umur): string {
    if (!validasiUmur($umur)) return "tidak valid";
    return $umur >= 17 ? "dewasa" : "anak";
}

Fungsi kecil yang saling memanggil jauh lebih mudah dites dan dipakai ulang daripada satu fungsi raksasa.

Catatan teknis: Parameter bisa punya nilai default: function sapa($nama = "Tamu"). Kalau pemanggil tidak memberi argumen, nilai default dipakai. Aturannya: parameter ber-default harus ditaruh setelah parameter wajib.

Tantangan

Fungsi diskon

Buat fungsi hitungDiskon($harga, $persen = 10) yang mengembalikan harga setelah diskon (int). Panggil dengan 2 argumen berbeda dan tampilkan hasilnya.