
Variadic Function adalah Fungsi yang dapat menerima argumen berapapun, sehingga tidak terbatas pada jumlah argumen yang didefinisikan saat pendifinisian fungsi. Variadic Function biasanya digunakan untuk membuat sebuah fungsi yang jumlah argumennya bersifat variable / berubah-ubah. Contoh sederhananya dalam penjumlahan / mencari nilai rata-rata. Lalu bagaimana cara membuatnya?
Membuat Variadic Function dengan Fungsi PHP
Cara yang pertama adalah dengan menggunakan fungsi bawaan dari PHP. Coba anda perhatikan kode dibawah ini.
<?php
function sum(){
$seluruh_argumen = func_get_args();
$jumlah_argumen = func_num_args();
print_r($seluruh_argumen);
echo "\n";
echo $jumlah_argumen;
}
sum(1,2,3,4,5);
Jika anda menjalankan kode diatas akan tampil seluruh argumen yang diinput, ini dapat dilakukan dengan menampilkan hasil fungsi func_get_args() yang saya tampung kedalam variable $seluruh_argumen. Dengan fungsi bawaan PHP ini, seluruh argumen yang diinput dalam bentuk Array.
Di baris kelima saya juga menampung hasil pemanggilan fungsi func_num_args() kedalam variable $jumlah_argumen. Variable ini akan berisi jumlah seluruh argumen yang telah saya input dalam pemanggilan fungsi sum().
Dengan kode seperti diatas, selanjutnya kita bisa mengolah seluruh argumen yang tertampung dalam variable $seluruh_argumen. Sebagai contoh saya akan membuat sebuah fungsi penambahan yang akan menjumlahkan seluruh argumen yang diinput saat pemanggilan fungsi seperti dibawah ini.
<?php
function sum(){
$seluruh_argumen = func_get_args();
$jumlah = 0;
foreach ($seluruh_argumen as $val){
$jumlah += (int)$val;
}
return $jumlah;
}
echo sum(5,5,5,5);
Dalam kode diatas saya melakukan perulangan untuk menjumlahkan seluruh argumen yang diinput. Di dalam perulangan saya menggunakan fitur Type Casting untuk merubah seluruh argumen menjadi tipe data integer agar tidak terjadi error ketika yang diinput bukan berupa integer. Hasil akhir dari fungsi tersebut akan mengembalikan hasil penjumlahan seluruh argumen.
Contoh lainnya saya akan membuat fungsi rata-rata dengan Variadic Function.
<?php
function sum(){
$seluruh_argumen = func_get_args();
$jumlah_argumen = func_num_args();
$jumlah = 0;
foreach ($seluruh_argumen as $val){
$jumlah += (int)$val;
}
$jumlah /= $jumlah_argumen;
return $jumlah;
}
echo sum(5,5,5,5);
Dalam kode diatas saya membagi hasil akhir penjumlahan argumen dengan variable $jumlah_argumen dimana variable ini berisi jumlah dari seluruh argumen. Hasil akhir akan didapatkan rata-rata dari hasil penjumlahan seluruh argumen.
Membuat Variadic Function menggunakan Splat Operator
Kita juga bisa menggunakan Splat Operator untuk membuat sebuah Variadic Function.
<?php
function sum(...$seluruh_arg){
$jumlah_argumen = count($seluruh_arg);
$jumlah = 0;
foreach ($seluruh_arg as $val){
$jumlah += (int)$val;
}
$jumlah /= $jumlah_argumen;
return $jumlah;
}
echo sum(5,5,5,5);
Perhatikan di baris 3 dalam pendefinisian fungsi saya menggunakan splat operator untuk menyimpan seluruh argumen kedalam variable $seluruh_arg. Tidak peduli berapapun jumlah argumen yang diinput akan tetap ditampung dalam vatiable ini sebagai Array.
Untuk pengolahan seluruh argumen yang masuk tidak jauh berbeda seperti contoh kita sebelumnay yang menggunakan fungsi bawaan PHP untuk membuat Variadic Function.