Każdy program, który się dobrze zaczyna, kończy się źle. Program, który zaczyna się źle, kończy się przerażająco.
PHP - funkcje

Funkcje użytkownika

Funkcja może być zdefiniowana używając składni takiej jak poniższa:

    <?php

    
function foo ($arg_1$arg_2, ..., $arg_n)
    {   echo 
"Przykładowa funkcja.\n";
        return 
$retval;
    }
    
    
?>

Dowolny poprawny kod PHP może się pojawić wewnątrz funkcji, także definicje innych funkcji i klas.

PHP nie obsługuje przeciążania funkcji.

PHP obsługuje funkcje o zmiennej liczbie argumentów oraz domyślne argumenty funkcji. Jest to możliwe dzięki funkcjom func_num_args(), func_get_arg() i func_get_args().

 

Argumenty funkcji

Dane mogą być przekazywane do funkcji przez listę argumentów, która jest separowaną przecinkami listą zmiennych i/lub stałych.

PHP obsługuje przekazywanie argumentów przez wartość (domyślnie), przez referencję oraz wartości domyślne argumentów.

Przekazywanie argumentów przez referencję

Domyślnie, argumenty funkcji są przekazywane przez wartość (a więc jeśli zmienisz wartość argumentu wewnątrz funkcji, nie zmieni się ona poza funkcją). Jeśli chcesz pozwolić funkcji na modyfikację swoich argumentów, musisz przekazać je przez referencję.

Jeśli chcesz, aby argumenty były zawsze przekazywane przez referencję, przed nazwą zmiennej w definicji funkcji wstaw ampersand (&), np.:

    <?php

    
function dodaj_cos_extra(&$string)
    {   
$string .= 'i coś extra.';
    }
    
    
$str 'To jest string, ';
    
dodaj_cos_extra($str);
    
    echo 
$str;    // wyświetli 'To jest string string, i coś extra.'
    
    
?>

Wartości domyślne argumentów

Funkcja może definiować wartości domyślne dla argumentów skalarnych, np.:

    <?php

    
function robkawe ($typ "cappucino")
    {   return 
"Robię kubek $type.\n";
    }

    echo 
robkawe();             // wyświetli 'Robię kubek cappucino.'
    
echo robkawe ("espresso");  // wyświetli 'Robię kubek espresso.'

    
?>

Domyślna wartość musi być stałym wyrażeniem, a nie np. zmienną lub elementem klasy.

Używając domyślnych argumentów, argumenty zawierające wartości domyślne powinny być na końcu listy argumentów. W przeciwnym przypadku funkcja może nie działać tak, jak się tego spodziewałeś, np.:

    <?php

    
function robjogurt ($typ "acidophilus"$smak)
    {   return 
"Robię miskę $typ $smak.\n";
    }
 
    echo 
robjogurt ("malinowy");   // nie działa tak jak się spodziewaliśmy
    
    
?>

Powyższa funkcja wyświetli:

    Warning: Missing argument 2 in call to robjogurt() in /.../functest.html on line NN
    Robię miskę malinowy.

Porównaj powyższy przykład z tym:

    <?php

    
function robjogurt ($smak$typ "acidophilus")
    {   return 
"Robię miskę $type $flavour.\n";
    }
 
    echo 
robjogurt ("malinowy");   // działa tak jak się spodziewaliśmy
    
    
?>

Powyższy kod wyświetla:

    Robię miskę acidophilus malinowy.

Listy argumentów o zmiennej długości

PHP obsługuje listy o zmiennej długości w funkcjach zdefiniowanych przez użytkownika. Jest to naprawdę prostę przy użyciu funkcji func_num_args(), func_get_arg() i func_get_args().

Nie wymagana jest żadna specjalna składnia. Listy argumentów mogą być ciągle jawnie podane przy definicji funkcji i będą się zachowywać normalnie.

 

Zwracane wartości

Wartości są zwracane przy użyciu opcjonalnej instrukcji return. Może być zwracany dowonlny typ, włączając w to tablice i obiekty. Spowoduje to natychmiastowe zakończenie działania funkcji i przekazanie kontroli do linii, z której była wywołana.

    <?php

    
function kwadrat ($num)
    {   return 
$num $num;
    }

    echo 
kwadrat(4);   // wyświetla '16'
    
    
?>

Funkcja nie może zwracać wielu wartości, ale podobny efekt można uzyskać przez zwracanie tablicy, np.:

    <?php

    
function maleLiczby()
    {   return array (
012);
    }

    list (
$zero$jeden$dwa) = maleLiczby();
    
    
?>
« wstecz   dalej »