Os objetos no PHP são passados ​​por valor ou referência?

Neste código:

<?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");
    }
}
?>

Quando o métodoBar::test() é executado e altera o valor de foo # 5 na matriz de objetos foo, o foo # 5 na matriz será afetado, ou será$testFoo variável seria apenas uma variável local que deixaria de existir no final da função?

questionAnswers(3)

yourAnswerToTheQuestion