Belajar PHP Part 39 : Reference (Alias)
- Reference adalah mengakses variable yang sama dengan nama variable yang berbeda
- Reference di PHP tidak sama dengan reference di bahasa pemrograman seperti C/C++ yang memiliki fitur pointer
- Analogi reference itu seperti file, jika variable adalah file, dan value nya adalah isi file nya, maka reference adalah membuat shortcut (di Windows) atau alias (di Linux/ Mac) terhadap file yang sama
- Saat kita mengubah isi value dari reference, maka secara otomatis value variable aslinya pun berubah
- Untuk membuat reference terhadap variable, kita bisa menggunakan karakter &
Assign By Reference
- Pertama, PHP reference bisa memungkinkan kita bisa membuat beberapa variable menuju ke value yang sama
$name = "Eko";$otherName = &$name; //assign by reference$otherName = "Budi";echo $name . PHP_EOL;
Variable $otherName = "&$name"; menjadi alias dari variable $name ="Eko"; dan nilainya akan di copy otomatis ke $otherName.
Ketika variable $otherName membuat value baru, secara otomatis nilai pada $name akan ikut berubah.
Pass By Reference
- Selanjutnya yang bisa dilakukan di PHP adalah, mengirim data ke function dengan reference
function increment(int $value) {$value++;}$counter = 1;
increment($counter);echo $counter;
saat melaukan call increment($counter); sebenarnya kita hanya melakukan pengiriman 1 ke function, dan $counter = 1; nilainya tidak akan bertambah.
atau
function increment(int &$value) {$value++;}$counter = 1;increment($counter);echo $counter . PHP_EOL;
Dengan menambahkan & pada argument $value di function increment, secara otomatis akan melakukan pass by reference ke variable $counter.
Returning References
- PHP juga bisa mengembalikan reference pada function
- Namun hati-hati, gunakan fitur ini memang ada alasannya, karena fitur ini bisa membingungkan
- Jarang digunakan fitur returning references saat membuat sebuah aplikasi
function &getValue () {static $value = 100;return $value;}$a = &getValue();$a = 200;$b = &getValue();echo $b . PHP_EOL;