Dalam manual PHP, untuk menunjukkan sintaks untuk fungsi dengan parameter opsional, mereka menggunakan tanda kurung di sekitar setiap set parameter opsional yang bergantung. Misalnya, untuk date()
fungsi, manual berbunyi:
string date ( string $format [, int $timestamp = time() ] )
Di mana $timestamp
parameter opsional, dan ketika dibiarkan kosong, defaultnya time()
adalah nilai pengembalian fungsi.
Bagaimana Anda membuat parameter opsional seperti ini ketika mendefinisikan fungsi khusus di PHP?
function dosomething($var1, $var2, $optionalValue = null)
Saya menemukan opsi yang lebih baik ini.Namun, jika Anda memerlukan fungsi ini:
Dengan asumsi
$bar
tidak diharapkan menjadi boolean tentu saja.sumber
$bar === false
- ini adalah tindakan yang harus dilakukan ketika$bar
telah defaultfalse
. Ini akan menghindari tindakan yang salah jika0
dilewatkan, sehingga berhasil - KECUALI a boolean diperlukan. Seperti yang dikatakan Kzqai, solusi yang lebih umum adalah menggunakan$bar = null
, karena itu juga dapat digunakan ketika nilai $ bar adalah boolean. Tes kemudian menjadiif (is_null($bar))
atauif ($bar === null)
.Beberapa catatan yang juga bermanfaat bagi saya:
Pertahankan nilai default Anda di sisi kanan.
Nilai default argumen harus berupa ekspresi konstan. Itu tidak bisa variabel atau panggilan fungsi.
sumber
Berikan nilai opsional pada argumen opsional.
sumber
Fungsi tanggal akan didefinisikan seperti ini:
Biasanya, Anda akan meletakkan nilai default seperti ini:
Namun, hanya literal yang merupakan argumen default yang valid, itulah sebabnya saya digunakan
null
sebagai argumen default pada contoh pertama, tidak$timestamp = time()
, dan dikombinasikan dengan cek nol. Literal termasuk array (array()
atau[]
), boolean, angka, string, dannull
.sumber
Jika Anda tidak tahu berapa banyak atribut yang harus diproses, Anda dapat menggunakan token daftar argumen variad (
...
) yang diperkenalkan dalam PHP 5.6 ( lihat dokumentasi lengkap di sini ).Sintaksis:
Sebagai contoh:
Seperti yang Anda lihat, token ini pada dasarnya mengubah semua parameter menjadi array, yang dapat Anda proses dengan cara apa pun yang Anda suka.
sumber