Forum und email

Referenciakénti paraméterátadás

A függvényeknek változókat referenciaként is át lehet adni, így a függvény tudja módosítani a hívó környezetben definiált értéket. Ez a következőképpen oldható meg:

<?php
function ize(&$valtozo)
{
    
$valtozo++;
}

$a 5;
ize($a);
// $a itt 6
?>
Figyeld meg, hogy nincs referencia jelzés a függvényhíváskor, csak a függvény definíciójában. Ez önmagában elég a megfelelő működéshez. A PHP újabb verzióiban, egy figyelmeztetést fogsz kapni, hogy a referencia szerinti átadás hívásidőben (Call-time pass-by-reference) elavult, ha & jelet használsz ilyen esetben: foo(&$a);.

A következők szerepelhetnek referenciakénti paraméterátadásban:

  • Változó, például ize($a)
  • New utasítás, például ize(new osztaly())
  • Egy függvény által visszaadott referencia, például:

    <?php
    function &valami()
    {
        
    $a 5;
        return 
    $a;
    }
    ize(valami());
    ?>
    Lásd még a refencia visszatérési-érték leírását.

Minden más kifejezést kerülni kell referencia szerinti paraméterátadáskor, mivel az eredmény határozatlan lesz. A következő példákban a referencia szerinti paraméterátadás hibának minősül:

<?php
function valami() // Figyeld meg, nincs & jel!
{
    
$a 5;
    return 
$a;
}
ize(valami());

ize($a 5); // Kifejezés, nem változó
ize(5); // Konstans, nem változó
?>
Ezek a meghatározások a PHP 4.0.4 és későbbi verzióira érvényesek.