Forum und email

Függvényargumentumok

Az információ a függvényekhez az argumentumlistán keresztül jut el, ami vesszővel elválasztott kifejezések listája.

A PHP támogatja az érték szerinti (ez az alapértelmezett) referenciakénti paraméterátadást is, és az argumentumok kezdőértékét. A változó hosszúságú argumentumlisták csak a PHP 4-ben jelentek meg. Lásd a változó hosszúságú argumentumlistákat és a func_num_args(), func_get_arg() és a func_get_args() függvényeket részletesebb leírásért. PHP 3-ban hasonló hatás érhető el a függvénynek tömb típusú változó paraméterként történő átadásával:

Example#1 Tömb átadása függvénynek

<?php
function tombot_kezel($input)
{
    echo 
"$input[0] + $input[1] = "$input[0]+$input[1];
}
?>

Referencia szerinti argumentumfeltöltés

Alapértelmezésben a függvény paraméterei érték szerint adódnak át (vagyis ha megváltoztatod a változót a függvényen belül, annak a függvényen kívülre nincs hatása). Ha szeretnéd megengedni, hogy a függvény módosítsa az átadott paramétereket, referencia szerint kell átadni azokat.

Ha egy függvényargumentum mindig referencia szerint kell átadni, akkor a függvénydefinícióban az argumentum neve elé egy & jelet kell írni.

Example#2 Referencia szerinti paraméterátadás

<?php
function fgv_extrakkal(&$string)
{
    
$string .= 'és a szükséges plusssz.';
}
$str 'Ez egy karakterfüzér, ';
fgv_extrakkal($str);
echo 
$str;    // kiírja, hogy 'Ez egy karakterfüzér, és a szükséges plusssz.'
?>

Argumentumok kezdőértékei

Bármely függvény skalár-argumentumainak megadhatsz kezdőértéket a C++ szintaxisnak megfelelően:

Example#3 Alapértelmezett paraméterek használata függvényekben

<?php

function kavet_csinal($tipus "cappucino")
{
    return 
"Csinálok egy pohár " $tipus "t.\n";
}
echo 
kavet_csinal();
echo 
kavet_csinal("espresso");

?>

A fenti kód kimenete:

Csinálok egy pohár cappucinot.
Csinálok egy pohár espressot.
     

A PHP azt is megengedi, hogy tömböt vagy a speciális NULL típust használd alapértelmezett értékként. Például:

Example#4 Nem-skaláris értékek használata alapértelmezett értékként

<?php
function kavet_foz($tipusok = array("cappuccino"), $kaveFozo NULL)
{
    
$eszkoz is_null($kaveFozo) ? "kézzel" $kaveFozo;
    return 
"Főzök egy csésze ".join(", "$tipusok)." $eszköz.\n";
}
echo 
kavet_foz();
echo 
kavet_foz(array("cappuccino""lavazza"), "teafőzővel");
?>

A kezdőértéknek konstans kifejezésnek kell lennie, nem lehet változó, objektum vagy függvényhívás.

Figyelj arra, hogy a kezdőértékkel rendelkező argumentumok más argumentumoktól jobbra helyezkedjenek el; különben a dolgok nem úgy mennek majd, ahogy azt várnád [hanem úgy, ahogy írtad :)]. Lásd a következő kódot:

Example#5 Az alapértelmezett függvényargumentumok helytelen használata

<?php
function joghurtot_keszit($type "acidophilus"$flavour)
{
    return 
"Készítek egy köcsög $flavour ízű $type-t.\n";
}

echo 
joghurtot_keszit("eper");   // nem úgy működik, mint szeretnéd !?!?
?>

A fenti példa kimenete:

Warning: Missing argument 2 in call to joghurtot_keszit() in
/usr/local/etc/httpd/htdocs/phptest/functest.php on line 41
Készítek egy köcsög ízű eper-t.
     

Most hasonlítsd össze az alábbival:

Example#6 Az alapértelmezett függvényargumentumok helyes használata

<?php
function joghurtot_keszit($flavour$type "acidophilus")
{
    return 
"Készítek egy köcsög $flavour ízű $type-ot.\n";
}

echo 
joghurtot_keszit("eper");   // ez már jó
?>

A fenti példa kimenete:

Készítek egy eper ízű acidophilus-t.
     

Note: [Azért vannak kiskapuk... Az argumentumokat adjuk át egy asszociatív tömbben! Az alapértékeket pedig egy másik tömbben. Ezután vegyük végig az alapértékeket tartalmazó tömb elemeit. Ha nem definiáltak a kapott tömbben, akkor írjuk felül az alapértékeket tartalmazó tömb megfelelő elemével. Így bármelyik argumentum elhagyható, sőt még annyit is nyerünk a dolgon, hogy nem kell megjegyeznünk a paraméterek sorrendjét. (forrás: egy bő lére eresztett amerikai PHP 3 könyv)]

Note: A PHP 5-ös változatától kezdődően a referenciaként átadott argumentumokat is el lehet látni alapértékkel.

Változó hosszúságú argumentumlista

A PHP 4 és a későbbi váltizatok támogatják a változó hosszúságú argumentumlistát a felhasználók által definiált függvényekben. Valóban nagyon egyszerű kezelni ezt a func_num_args(), func_get_arg() és a func_get_args() függvényekkel.

Semmilyen különleges szintakszist nem igényel és az argumentumlista lehet explicit módon adott és viselkedhet úgy is, mint egy normál függvény.