031Edwin Arif belajar PHP Reference
posted by Edwin Arif on June 11th, 2007
Kita Belajar Reference Nyoooooook????? Nyooooook…
Reference di PHP, bukan pointer kyk di C lho.. Reference di PHP bisa dibilang hanyalah kumpulan simbol - simbol alias yang menununjuk nilai yang sama.. Didalam PHP, variable nama dan variable isi merupakan objek yang berbeda. Beberapa variable nama, dapat menunjuk satu objek variable isi. Analogi terdekatnya, mirip hardlinking-nya file linux lah.. Satu isi file, bisa punya nama file berbeda yang buanyaaak dimana-mana kalau kita hardlink di linux!
Dah.. Langsung masuk contoh aja nyoooook??! Nyooooook…
$a = 'Edwin';
$b = 'Testing';
$a &= $b;
Nah, ini artinya $a dan $b menunjuk pada isi yang sama, bukan kyk pointer di C dimana $a menunjuk ke $b atau sebaliknya..
Disini $a dan $b tuh punya tingkatan yang sejajar… Mereka menunjuk ke dalam isi yang sama..
Duh, tapi kl baris program diatas dijalanin begitu aja, akan ada 2 notice: undefined variable!! Wew.. Blm di assign value neh.. Tambahin yuk contoh programnya?? Yuuuuk…
$a = 'au ah gelap';
echo $b;
echo $a;
Waduh!!! Perhatian - perhatian!!! Setelah di test menggunakan php 5.2.2, kyknya reference-nya PHP disini dah menggunakan teknik pointer??!! Waaaa.. Lu liat aja deh hasil keluaran dari perintah diatas, hasilnya adalah ALAMAT MEMORY!!! hmmmm.. Apa gw yg salah ya?? Bentar dichek dulu lagi deh..
Waks!! Memalukan… Typo.. reference tu pake =& bukan &= hiks2… ya deh, ulang lagi deh… Memalukan!!! Hiks..
$c =& $d;
echo $c;
echo $d;
$c = 'Testing';
echo $c;
echo $d;
Yah, balik lagi, reference di PHP emang bukan kyk pointer di C, hehe.. Btw, untuk contoh diatas kita ga ada notice lagi, dasar nih $a sama $b nyusahin aja… Hidup $c dan $d!!!! Ok.. Satu contoh sederhana selesai.. Lanjut contoh berikutnya nyooook?!?? Ga mauuuuuuu… Capeeee… Ya udah istirahat dl ah..
Eh lanjut deh.. Sekarang kita lihat reference sebagai argumen di fungsi. Gimana? Yah, ayo - ayo aja lah…
function testing(&$var){
echo '$var didalam fungsi: '.$var;
}
testing(1);
Hmmm… Kalo program diatas dijalanin, dpt error “only variables can be passed by reference” dibaris program testing(1)
Artinya, ga boleh pake isi, cuma boleh pake nama! Test lagi deh…
//testing(1) //jgn lupa dicomment dulu yah..
testing($test);
$test = 'testing 1 2 3...';
testing($test);
/* Keluarannya di browser jadi gini nanti:
* $var didalam fungsi: $var didalam fungsi: testing 1 2 3...
*/
Oooooo… gitu… Tapi blm kepikiran nih, buat apa model reference kyk gini yah?? Kepakenya dalam bentuk apa yah?? Hmmm… Mungkin biar fungsi ini ga dipanggil langsung aja? Biar harus ada REFERENCE dulu dari variable lain? Bisa jadi sih, hehe.. Eh, tapi ketemu juga gunanya fungsi kyk gini… Gunanya ya kalo variable tersebut mo diubah langsung nilainya. Contoh yah..
function gaPakeRef($noRef){
$noRef = $noRef * 10;
return $noRef;
}
function pakeRef(&$pakeRef){
$pakeRef = $pakeRef * 10;
return $pakeRef;
}
$a = 2;
echo 'nilai return fungsi gaPakeRef($a) = '.gaPakeRef($a);
echo 'nilai $a yang menggunakan fungsi gaPakeRef tetap sama, $a = '.$a;
echo 'nilai return fungsi pakeRef($a) = '.pakeRef($a);
echo 'nilai $a yang menggunakan fungsi pakeRef telah berubah, $a = '.$a;
/* Keluarannya dibrowser jadi gini nanti:
*
* nilai return fungsi gaPakeRef($a) = 20
* nilai $a yang menggunakan fungsi gaPakeRef ttp sama, $a = 2
* nilai return fungsi pakeRef($a) = 20
* nilai $a yang menggunakan fungsi pakeRef berubah, $a = 20
*/
Yah, jadi baris pakeRef($a) sebenernya gunanya sama aja kl dipanggil pake baris $a = gaPakeRef($a)
Ngerti gaaaa?!?! Kl nggak ya sudah.. Gw dah kebayang nih mo pake referensi argumen untuk fungsi parsing text, hihihi…
Lanjut ah ke fungsi yang bukan argumennya yang reference, tapi fungsi itu sendiri adalah reference!!! Wow, seru nih…
function testRef(&$pakeRef){
$pakeRef = $pakeRef * 10;
return $pakeRef;
}
function &wow(){
$edwinarif = 3;
return $edwinarif;
}
function wiw(){
$edwinarif = 3;
return $edwinarif;
}
echo wow();
echo 'Hmmm... Biasa - biasa aja...';
echo testRef(wow()).'';
echo testRef(wiw());
Lhoo.. Sama aja tuh?? Terus terus?!?! Aaaaarrgh!!!
Break dulu!!! Mari kita kaji ulang arti dari reference.. Reference, beberapa variable nama menunjuk ke dalam satu variable isi.
So?? Hmmm.. Ya sudahlah nanti lagi aja deh.. bingung..