Menu

Fungsi PHP: Definisi, Return, Parameter, dan Tipe

Definisikan fungsi PHP dengan function name($param) { return $value; }. Pelajari nilai return, parameter default, named argument, passing by reference, deklarasi tipe dengan strict_types, tipe nullable dan union, serta variadic ...$args.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Fungsi PHP didefinisikan dengan kata kunci function, sebuah nama, daftar parameter, dan body; return mengirim nilai kembali ke pemanggil. function add(int $a, int $b): int { return $a + $b; } mendefinisikannya, dan add(2, 3) memanggilnya serta mengembalikan 5.

string dan int sebelum parameter adalah deklarasi tipe, dan : string setelah kurung adalah tipe return. Keduanya opsional, tetapi membantu menangkap kesalahan lebih awal dan mendokumentasikan apa yang diharapkan fungsi.

Nilai return dan mengembalikan beberapa nilai

return langsung mengakhiri fungsi. Fungsi tanpa return, atau dengan return; saja, mengembalikan null; deklarasikan : void jika fungsi itu dipanggil hanya untuk efeknya. Sebuah fungsi mengembalikan satu nilai, tetapi nilai itu bisa berupa array, yang kamu destructure di sisi pemanggil:

Lihat array destructuring untuk bentuk lain dari [...] =.

Parameter default dan named argument

Parameter dengan = value bersifat opsional: pemanggil boleh tidak menyertakannya. Parameter opsional ditulis setelah parameter wajib. Sejak PHP 8.0, named argument memungkinkan pemanggil memberikan parameter mana pun berdasarkan namanya, jadi kamu bisa melewati parameter opsional yang tidak kamu perlukan.

Named argument juga membuat pemanggilan fungsi bawaan lebih mudah dibaca: str_pad('7', 3, '0', pad_type: STR_PAD_LEFT). Nama parameter menjadi bagian dari antarmuka publik fungsi, jadi mengganti nama parameter bisa merusak pemanggil yang memakai nama.

Pass by reference

Biasanya PHP mengirim salinan setiap argumen, jadi fungsi tidak bisa mengubah variabel milik pemanggil. Tanda & sebelum parameter mengirim variabel itu sendiri. Fungsi bawaan seperti sort() bekerja dengan cara ini.

Mengembalikan nilai baru biasanya lebih jelas daripada mengubah argumen. Pakai referensi saat fungsi itu memang dimaksudkan untuk mengubah sesuatu di tempatnya.

Deklarasi tipe dan strict_types

Secara default, PHP mengonversi argumen ke tipe yang dideklarasikan jika bisa: add("5", 3) mengubah "5" menjadi 5. Menulis declare(strict_types=1); di bagian paling atas file mematikan perilaku itu untuk pemanggilan di file tersebut, sehingga tipe yang salah melempar TypeError alih-alih dikonversi.

Tanpa baris declare, pemanggilan yang sama mencetak 8. String yang bukan angka, seperti "five", melempar TypeError di kedua mode.

Tipe yang bisa kamu deklarasikan untuk parameter dan nilai return:

never adalah tipe return untuk fungsi yang selalu melempar exception atau keluar. Nama class dan interface juga bisa dipakai sebagai tipe.

Jumlah argumen yang tidak tetap dengan ...$args

...$numbers mengumpulkan argumen berapa pun jumlahnya ke dalam array. Tanda ... yang sama di sisi pemanggil menyebarkan array menjadi argumen-argumen terpisah.

Memakai variabel dari luar di dalam fungsi

Fungsi punya scope sendiri. Variabel yang didefinisikan di luarnya tidak terlihat di dalam, dan ini mengejutkan orang yang datang dari JavaScript:

<?php
$taxRate = 0.2;

function priceWithTax(float $price): float
{
    return $price * (1 + $taxRate);   // $taxRate is undefined here
}
Warning: Undefined variable $taxRate in /path/to/index.php on line 6

dan fungsi itu mengembalikan harga tanpa pajak. Sebagai gantinya, kirim nilainya sebagai parameter. Dengan begitu fungsi jujur tentang apa yang dibutuhkannya dan mudah diuji:

Kata kunci global juga berfungsi, tetapi menyembunyikan ketergantungan itu; variable scope membahasnya. Untuk fungsi pendek yang diberikan ke fungsi lain, seperti callback untuk array_map(), lihat anonymous function, yang bisa menangkap variabel dari luar dengan use.

Pertanyaan yang sering diajukan

Bagaimana cara mendefinisikan fungsi di PHP?

Pakai kata kunci function, sebuah nama, parameter di dalam kurung, dan body: function add(int $a, int $b): int { return $a + $b; }. Panggil dengan add(2, 3). Nama fungsi tidak membedakan huruf besar dan kecil, dan fungsi yang didefinisikan di level teratas file bisa dipanggil sebelum baris yang mendefinisikannya.

Bagaimana cara mengembalikan beberapa nilai dari fungsi PHP?

Kembalikan array lalu lakukan destructuring: function minMax(array $a): array { return [min($a), max($a)]; } lalu [$min, $max] = minMax([3, 1, 4]);. Untuk hasil yang diberi nama, kembalikan array asosiatif dan pakai ['min' => $min] = ....

Apa fungsi declare(strict_types=1)?

Pernyataan ini mematikan konversi tipe otomatis untuk pemanggilan yang dilakukan dari file tersebut, sehingga memberikan "5" ke parameter int melempar TypeError alih-alih mengubahnya menjadi 5. Pernyataan ini harus menjadi pernyataan paling pertama di file dan hanya berlaku untuk file itu.

Apa itu named argument di PHP?

Sejak PHP 8.0, kamu bisa memberikan argumen berdasarkan nama parameternya: htmlspecialchars($s, double_encode: false). Named argument boleh ditulis dalam urutan apa pun setelah argumen posisional, dan memungkinkanmu melewati parameter opsional yang tidak ingin kamu ubah.

Bagaimana cara mengirim variabel by reference di PHP?

Tulis & sebelum parameternya: function addOne(int &$n): void { $n++; }. Fungsi itu lalu mengubah variabel milik pemanggil. Tanpa &, PHP mengirim salinan dan variabel pemanggil tetap sama.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai