Passing by Reference (&$) kullanım örnekleri?
Dök. link: https://www.php.net/manual/en/language.references.pass.php
function (&$param1) { ..... }
şeklinde kullanımlarla karşılaştım ancak bunu özellikle kullanım amacı nedir? Ne amaçla kullanılır tam olarak?
yani şöyle düşün, fonksiyonda parametre olarak geçtiğin elemanı değiştirmek istiyorsan ama onu geriye döndürmek yerine değerinin direk etkilenmesini istiyorsan kullanabilirsin, sonuçta fonksiyonun sadece onunla ilgili bir işlemi olmayabilir, ya da aldığın parametreye göre fonksiyon farklı bir işlem için değer döndürebilir ama alınan parametreninde bundan etkilenilmesi istenebilir.
kısaca referans aldığın değişkenin değerini etkiliyor bu şekilde kullanırsan, en basit örneği;
<?php
$text = 'hello';
function changeText(&$text) {
$text .= ' world';
}
changeText($text);
echo $text; // hello world
başka bir örnek
<?php
$numbers = [2, 3, 5];
function multiply(&$nums) {
$nums = array_reduce($nums, function($prev, $num) {
$prev[] = $num * 2;
return $prev;
}, []);
}
multiply($numbers);
print_r($numbers);
/*
Array
(
[0] => 4
[1] => 6
[2] => 10
)
*/
tabi bu olay sadece parametre geçmekle alakalı değil, örneğin şöyle kullanımlarıda var;
$text1 = 'hello';
$text2 = &$text1;
$text2 = 'deneme';
echo $text1;
$text2
oluşturulurken $text1
referansıyla oluşturuluyor, dolayısı ile $text2
değiştirince aslında referansı yani $text1
değişiyor. Bu tarz kullanımlara çok takılma, vakti gelirse zaten ihtiyacın olduğu bir noktada mutlaka kullanırsın :)