Forum und email
Przekazywanie przez referencje

Przekazywanie przez referencje

Możesz przekazać zmienną do funkcji poprzez referencję, by funkcja mogła modyfikować swoje parametry. Skłania jest jak następuje:

<?php
function foo (&$zmienna)
{
    
$zmienna++;
}

$a=5;
foo ($a);
// $a jest równe 6 w tym momencie
?>

Weź pod uwagę to, że nie ma znaku odwoływania się przez referencję przy wywoływaniu funkcji - istnieje tylko w definicji funkcji. Sama definicja funkcji jest wystarczającym miejscem do zaznaczenia przekazywania argumentów przez referencję.

Przez referencję mogą być przekazywane następujące rzeczy:

  • Zmienne, np. foo($a)

  • Instrukcja new, np. foo(new foobar())

  • Referencję, zwracane z funkcji, np.:

    <?php
    function &bar()
    {
        
    $a = 5;
        return
    $a;
    }
    foo(bar());
    ?>

    Zobacz również wyjaśnienia na temat zwracania przez referencję.

Każde inne wyrażenie nie powinno być przekazywane przez referencję, ponieważ wynik takiego przekazania jest nieprzewidywalny. Dla przykładu, poniższe przykłady przekazywania przez referencję są niepoprawne:

<?php
function bar() // Zwróć uwagę na brak &
{
    
$a = 5;
    return
$a;
}
foo(bar());

foo($a = 5); // Wyrażenie, nie zmienna
foo(5); // Stała, nie zmienna
?>

Te wymagania są dla PHP 4.0.4 i wyższych wersji.