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
, 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.


kalo gwe si lebih suka pakai array_merge() bro.
$defaults = array(‘a’ => NULL, ‘b’ => 8, ‘c’ => NULL, ‘d’ => ‘D’, ‘e’ => ’150′, ‘f’ => ’30′, ‘g’ => NULL, ‘h’ => 7200);
$data = array_merge($defaults, $data);
Tapi ya manggilnya masih pakai $data['a'] sih
@mas natali: nice trick, lebih ringkas, n sering2 bagi2 ilmunya
thanks!
wah bagus neh…..saya blom pernah kena sikon kek gitu….
thx buat yg comment pertama sama bung freddy.
Kenapa contohnya harus freddy ganteng? :p
@wildanr : kalo gw tulis “wildan ganteng” maka itu fitnah namanya .. hahaha … *peace* v^-^
ini blog ka freddy ya??
@yulianti : lho kok bisa tahu?
Udah lama gw gak main…
komeng lagi gan….. , Fred nt beneran suka sama Kusumi ?
Kalau serius, Biar ane taarufin sama doi.
@Brain90 : bukan suka lagi bos, udah tergila-gila gw ma dia.
.. serius nih ma taarufin?