Czy obiekty w PHP są przekazywane przez wartość lub odwołanie?

W tym kodzie:

<?php
class Foo
{
    var $value;

    function foo($value)
    {
        $this->setValue($value);
    }

    function setValue($value)
    {
        $this->value=$value;
    }
}

class Bar
{
    var $foos=array();

    function Bar()
    {
        for ($x=1; $x<=10; $x++)
        {
            $this->foos[$x]=new Foo("Foo # $x");
        }
    }

    function getFoo($index)
    {
        return $this->foos[$index];
    }

    function test()
    {
        $testFoo=$this->getFoo(5);
        $testFoo->setValue("My value has now changed");
    }
}
?>

Kiedy metodaBar::test() jest uruchamiany i zmienia wartość foo # 5 w tablicy obiektów foo, czy rzeczywisty foo # 5 w tablicy zostanie naruszony, czy też$testFoo zmienna jest tylko zmienną lokalną, która przestałaby istnieć na końcu funkcji?

questionAnswers(3)

yourAnswerToTheQuestion