Fungsi adalah blok kode yang dapat digunakan kembali untuk melakukan tugas tertentu. PHP memiliki ribuan fungsi bawaan dan juga memungkinkan Anda membuat fungsi sendiri.
Apa itu Fungsi?
Fungsi adalah sekumpulan pernyataan yang dapat digunakan kembali dalam program. Fungsi tidak akan dijalankan secara otomatis saat halaman dimuat, tetapi akan dijalankan ketika dipanggil.
Keuntungan utama menggunakan fungsi:
- Penggunaan kembali kode: Kode yang sama dapat digunakan berulang kali
- Organisasi kode yang lebih baik: Memisahkan logika menjadi blok-blok terpisah
- Meminimalkan redundansi kode
- Membuat kode lebih mudah di-maintain
Membuat Fungsi
Untuk membuat fungsi dalam PHP, gunakan kata kunci function
, diikuti dengan nama fungsi dan tanda kurung ()
:
<?php
function namaFungsi() {
// kode yang akan dijalankan
echo "Halo dari fungsi!";
}
// Memanggil fungsi
namaFungsi();
?>
Contoh di atas akan menampilkan "Halo dari fungsi!" saat fungsi dipanggil.
Aturan Penamaan Fungsi
Saat membuat fungsi, perhatikan aturan berikut:
- Nama fungsi harus dimulai dengan huruf atau underscore
- Nama fungsi hanya boleh berisi karakter alfanumerik dan underscore (a-z, A-Z, 0-9, dan _)
- Nama fungsi tidak case-sensitive (tetapi lebih baik mengikuti konvensi yang konsisten)
- Nama fungsi harus deskriptif tentang apa yang dilakukan fungsi tersebut
Tips: Gunakan gaya penamaan camelCase (seperti hitungTotal()
) atau snake_case (seperti hitung_total()
) secara konsisten untuk semua fungsi Anda.
Contoh Fungsi Sederhana
<?php
// Fungsi untuk menyapa seseorang
function ucapSalam() {
echo "Selamat datang di PHP.co.id!";
}
// Memanggil fungsi
ucapSalam(); // Output: Selamat datang di PHP.co.id!
?>
Parameter dan Argumen
Parameter adalah variabel yang dideklarasikan dalam definisi fungsi, sedangkan argumen adalah nilai yang diberikan ketika fungsi dipanggil.
Fungsi dengan Parameter
<?php
// Fungsi dengan satu parameter
function ucapSalamKepada($nama) {
echo "Halo, $nama! Selamat datang di PHP.co.id!";
}
// Memanggil fungsi dengan argumen
ucapSalamKepada("Budi"); // Output: Halo, Budi! Selamat datang di PHP.co.id!
?>
Fungsi dengan Beberapa Parameter
<?php
// Fungsi dengan beberapa parameter
function hitungLuasPersegiPanjang($panjang, $lebar) {
$luas = $panjang * $lebar;
echo "Luas persegi panjang: $luas";
}
// Memanggil fungsi
hitungLuasPersegiPanjang(5, 3); // Output: Luas persegi panjang: 15
?>
Parameter Default
PHP memungkinkan Anda menetapkan nilai default untuk parameter. Nilai default akan digunakan jika tidak ada argumen yang diberikan saat memanggil fungsi.
<?php
// Fungsi dengan parameter default
function ucapSalamWaktu($nama, $waktu = "pagi") {
echo "Selamat $waktu, $nama!";
}
// Memanggil fungsi tanpa argumen kedua
ucapSalamWaktu("Budi"); // Output: Selamat pagi, Budi!
// Memanggil fungsi dengan kedua argumen
ucapSalamWaktu("Andi", "siang"); // Output: Selamat siang, Andi!
?>
Penting: Parameter dengan nilai default harus ditempatkan setelah parameter yang tidak memiliki nilai default dalam definisi fungsi.
Nilai Kembalian (Return Value)
Fungsi dapat mengembalikan nilai menggunakan pernyataan return
. Nilai ini dapat digunakan untuk perhitungan lebih lanjut, disimpan dalam variabel, atau langsung ditampilkan.
<?php
// Fungsi yang mengembalikan nilai
function hitungLuas($panjang, $lebar) {
$luas = $panjang * $lebar;
return $luas;
}
// Menggunakan nilai kembalian dalam variabel
$luasRuangan = hitungLuas(4, 5);
echo "Luas ruangan: $luasRuangan meter persegi"; // Output: Luas ruangan: 20 meter persegi
// Menggunakan nilai kembalian langsung dalam operasi
$totalLuas = hitungLuas(4, 5) + hitungLuas(3, 3);
echo "Total luas: $totalLuas meter persegi"; // Output: Total luas: 29 meter persegi
?>
Setelah eksekusi pernyataan return
, fungsi akan berhenti dan kode di bawahnya tidak akan dijalankan.
Fitur Lanjutan Fungsi
Variabel Scope dalam Fungsi
Variabel yang dideklarasikan di dalam fungsi memiliki scope lokal (hanya dapat diakses di dalam fungsi tersebut). Variabel yang dideklarasikan di luar fungsi memiliki scope global.
<?php
// Variabel global
$x = 10;
function contohScope() {
// Variabel lokal
$y = 5;
// Mencoba mengakses variabel global
// Ini TIDAK akan menampilkan nilai $x tanpa kata kunci global
echo "Nilai y di dalam fungsi: $y
";
// Untuk mengakses variabel global, gunakan kata kunci global
global $x;
echo "Nilai x di dalam fungsi setelah global: $x
";
}
contohScope();
// Ini akan menampilkan nilai $x
echo "Nilai x di luar fungsi: $x
";
// Ini akan menghasilkan error karena $y adalah variabel lokal di contohScope()
// echo "Nilai y di luar fungsi: $y"; // Akan menghasilkan error
?>
Fungsi Rekursif
Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Ini berguna untuk tugas seperti perhitungan faktorial, traversal struktur data bertingkat, dll.
<?php
// Fungsi rekursif untuk menghitung faktorial
function faktorial($n) {
if ($n <= 1) {
return 1;
} else {
return $n * faktorial($n - 1);
}
}
echo "5! = " . faktorial(5); // Output: 5! = 120
// faktorial(5) = 5 * faktorial(4)
// faktorial(4) = 4 * faktorial(3)
// faktorial(3) = 3 * faktorial(2)
// faktorial(2) = 2 * faktorial(1)
// faktorial(1) = 1
?>
Peringatan: Hati-hati dengan fungsi rekursif. Selalu pastikan ada kondisi terminasi untuk menghindari rekursi tak terbatas yang dapat menyebabkan error "maximum recursion depth exceeded".
Fungsi Anonymous (Closure)
PHP mendukung fungsi tanpa nama (anonymous function) yang juga dikenal sebagai closure. Ini berguna saat membuat fungsi callback atau saat fungsi hanya digunakan sekali.
<?php
// Fungsi anonymous disimpan dalam variabel
$sapa = function($nama) {
return "Halo, $nama!";
};
// Memanggil fungsi anonymous
echo $sapa("Doni"); // Output: Halo, Doni!
// Fungsi anonymous sebagai callback
$angka = [1, 2, 3, 4, 5];
$angkaKali2 = array_map(function($n) {
return $n * 2;
}, $angka);
print_r($angkaKali2); // Output: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
?>
Arrow Functions (PHP 7.4+)
Mulai PHP 7.4, arrow functions menyediakan sintaks yang lebih singkat untuk fungsi anonymous sederhana.
<?php
// Fungsi anonymous tradisional
$angka = [1, 2, 3, 4, 5];
$angkaKali2 = array_map(function($n) {
return $n * 2;
}, $angka);
// Dengan arrow function (lebih singkat)
$angkaKali3 = array_map(fn($n) => $n * 3, $angka);
print_r($angkaKali2); // Output: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
print_r($angkaKali3); // Output: Array ( [0] => 3 [1] => 6 [2] => 9 [3] => 12 [4] => 15 )
?>
Arrow functions secara otomatis mengambil semua variabel dari scope induk tanpa perlu menggunakan use
.
PHP memiliki ribuan fungsi bawaan yang dapat digunakan untuk berbagai keperluan. Berikut beberapa kategori fungsi bawaan yang sering digunakan: