Autor Zpráva
TomAsQo
Profil
ahoj, neviete, ako sa da(ak sa vobec da) spravit v PHP-cku funkcia s nepovinnymi parametrami bez hadzania chyby?
Str4wberry
Profil
Pokud se nepletu tak by mělo fungovat toto.
function funkce($nepovinnyparametr = "", $povinnyparametr)
{

}
ale ruku do ohně bych za to nedal :)
koudi
Profil
jestli se nepletu, tak nepovinne musi byt az na konci.
Mastodont
Profil
Ano, buď můžeš k libovolnému parametru doplnit default hodnotu, nebo si uděláš "přetíženou" funkci, a tam můžeš mít parametrů kolik chceš.
Pavel Prochazka.zde.cz
Profil *
Mastodont zdravicko, jak se v php delaji pretezovane funkce?
Pavel Prochazka.zde.cz
Profil *
koudi ano mas pravdu nepovinne parametry MUSI bejt na konci, pokud je das jinam uz to nejsou nepovinne parametry v pravem slova smyslu ale parametry ktere pri neudani jeji hodnoty se pouzije nejaka defaultni hodnota...
Mastodont
Profil
Pavel Prochazka.zde.cz

No, není to klasické přetížení ve stylu C# nebo C++, kde máš v kódu víc definic funkcí - ale v podstatě o přetížení jde. A dělá se to úplně jednoduše:


function overloaded() {
switch (func_num_args()) {
case 0:
...
case 1:
....
}
}


Tu funkci pak můžeš volat s libovolnou sadou parametrů, které si uvnitř zkontroluješ a větvíš kód. Pro nepovinné parametry ideální.
Pavel Prochazka.zde.cz
Profil *
Mastodont super....
nebude to delat ale problemy? ja mam takove tuseni ze kdyz nesedi pocet parametru, tak parser neni nadsenej a porad si neco vymrcuje :). Neni jeste neco napsat nejake klicove slovo do seznamu parametu?
Pavel Prochazka.zde.cz
Profil *
Zdraim, kupodivu to nerve :). Akorat to nefaka. Zde je kod:

function pretezovani() {
switch (func_num_args()) {
case 0:
$z = $z + 1;
case 1:
$z = $z + 2;
}
}

a volam to takto:

pretezovani (40,5);
pretezovani(10);

a nejak se to nechce vykonat (nechce se pricist ta promenna $Z) proste to na to ani neskoci... A dalsi vecicka jak nacitat parametry ktere jsem zadal....
Pavel Prochazka.zde.cz
Profil *
tak jsem malonko studoval a vytvoril toto:

function pretezovani() {
echo "<br />--------------------------------------------------<br /> ";
$numargs = func_num_args();
echo "Pocet parametrů: " . $numargs . "<br /><br /> ";
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "Parametr $i je: " . $arg_list[$i] . "<br /> ";
}
}
to pekne faka :):).
Mastodont
Profil
No ta první funkce skutečně fachat nemohla, protože ve volání

pretezovani (40,5); 


jsou parametry dva a ty v kódu počítáš s nula nebo jedním parametrem :-) Pro načítání parametrů slouží func_get_arg() a func_get_args() , viz manuál
TomAsQo
Profil
paraada :) diky ludia :) mozem povedat, ze tato tema je vyriesena ;) ked chcete, tak este nieco pozamenajte, neskor sa tato tema uzavrie ;)
Toto téma je uzamčeno. Odpověď nelze zaslat.