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.

soulmy adlı üyeden alıntı: mesajı görüntüle
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.