Forum und email
Předávání referencí (odkazem)

Předávání referencí (odkazem)

Můžete předávat proměnnou do funkce pomocí odkazu, takže funkce může modifikovat její argumenty. Syntaxe je následující:

function foo (&$var)
{
    $var++;
}

$a=5;
foo ($a);
// $a je teď 6

Všimněte si, že ve volání funkce není znak reference - pouze v její definici. Samotná definice funkce stačí na správné předávání argumentu odkazem.

Následující věci lze předávat referencí:

  • Proměnná, např. foo($a)

  • Konstrukt s new, např. foo(new foobar())

  • Reference, vracená z funkce, např.:

    function &bar()
    {
        $a = 5;
        return $a;
    }
    foo(bar());

    Viz také vysvětlení vracení přes reference.

Žádné jiné výrazy nemohou být předávány odkazem, výsledek tohoto není definován. Například, následující ukázky předávání odkazem jsou neplatné:

function bar() // Všimněte si chybějícího &
{
    $a = 5;
    return $a;
}
foo(bar());

foo($a = 5) // Výraz, nikoli proměnná
foo(5) // Konstanta, nikoli proměnná

Tyto požadavky platí pro PHP 4.0.4 a pozdější.