PHP de objeler fonksiyona parametre olarak gönderildiğinde değişkenlerde olduğu gibi "pass by value" değil "pass by reference" olarak gönderilir. $obj değişkeni aslında pointer dır. Fonksiyona değişkenin değerini değil adresini gönderir, böylelikle asıl değişkenin değeri değişmiş olur, fonksiyon içinde yeni bir değişken oluşturulmaz.
Eğer 2. örnekdeki fonksiyonu "function test(&$degisken)" şeklinde $değişken değişkenini "pass by reference" şeklinde almaya ayarlarsan objedeki gibi sonucu 2 olarak vericektir.
Doğru doğru, string tabirini yanlış kullandım. Mesajı editledim şimdi.
Ben tam anlatamadım derdimi. Baştan alalım.
function test($obj) {
$obj->a++;
}
$obj = new stdClass();
$obj->a = 1;
test($obj);
echo $obj->a;Ekran çıktısı : 2
function test($degisken) {
$degisken++;
}
$degisken = 1;
test($degisken);
echo $degisken;Ekran çıktısı : 1
Neden farklı sonuç çıkıyor? Onu anlayamadım.