Seringkali gw melihat kode fungsi yang dtuliskan seperti bawah ini

	function contoh_fungsi($a = NULL, $b = 8, $c = NULL, $d = 'D', $e = '150', $f = '30', $g = NULL, $h = 7200) {
		// bla ... bla ..
	}

Kode di atas benar, dan tentu aja gak salah sama sekali ^-^ . Tapi sungguh menyenangkan (bagi gw) jika disederhanakan lagi fungsinya menjadi :

       function contoh_fungsi($data = array()) {
		// bla ... bla ..
	}

Lho kok bisa?

Kembali ke contoh kode awal, jika ingin mengganti value dari variable $a saja :

	$a	= 3600
	contoh_fungsi($a) ;

Begitupun kalau gak ada value default yang berubah

	contoh_fungsi() ;

Tapi yang menjadi persoalan gimana kalau kita hanya ingin mengganti value dari variable $h saja, dengan cara penulisan di atas maka cara memanggilnya adalah .

	$h	= 3600
	contoh_fungsi('',8,'','D','150','30','', $h) ;

Bukan masalah panjangnya, yang repot adalah gw harus tahu nilai default dari masing-masing variable , dan variablenya itu ada banyak. Karena daya ingat gw gak terlalu terlalu :D , bagi gw itu cukup merepotkan jika memanggil fungsi tersebut jika hanya mengubah satu variable defaultny saja yang kebetulan ada posisi akhir. :(

So, lebih baik dibikin alternatif, manfaatkan fleksibiltas variable di PHP yang on-the-fly (kata sebagian orang). Kata kuncinya adalah “value to variable” , maksudnya mengubah value menjadi variable , misalkan ada value “hai” maka akan dijadikan $hai.

contoh :

2
3
4
5
$var	= "hai" ;
$$var	= "freddy ganteng" ;
 
echo "$var $hai" ; // print "hai freddy ganteng"

Modifikasi untuk fungsi di atas

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function contoh_fungsi($data = array()) {
	$defaults = array('a' => NULL, 'b' => 8, 'c' => NULL, 'd' => 'D', 'e' => '150', 'f' => '30', 'g' => NULL, 'h' => 7200);
 
	foreach ($defaults as $key => $val) {
		$$key = ( ! isset($data[$key])) ? $val : $data[$key];
	}
 
	// bla .. bla ..
	// contoh bla .. bla ..
	echo 	"a => ",$a,"<br />",
		"b => ",$b,"<br />",
		"c => ",$c,"<br />",
		"d => ",$d,"<br />",
		"e => ",$e,"<br />",
		"f => ",$f,"<br />",
		"g => ",$g,"<br />",
		"h => ",$h ;
}
 
// Cara memanggil
$data	= array('a' => 3, 'h' => 2500) ;
contoh_fungsi($data) ;

Semoga berguna. CMIIW.