¿Los objetos en PHP pasan por valor o referencia?

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

Cuando el metodoBar::test() se ejecuta y cambia el valor de foo # 5 en la matriz de objetos foo, ¿se verá afectado el foo # 5 real en la matriz, o se verá afectado el$testFoo ¿la variable será solo una variable local que dejaría de existir al final de la función?

Respuestas a la pregunta(3)

Su respuesta a la pregunta