Funkcje w php

Funkcje to bloki kodu, które mają określone zadanie do wykonania
Funkcje tworzymy za pomocą słowa kluczowego function, następnie podając jej nazwę, nawias okrągły i nawias klamrowy. Wewnątrz nawiasu okrągłego można definiować parametry, a wewnątrz nawiasu klamrowego wstawia się instrukcje do wykonania. Sama definicja funkcji nie wiąże się z jej wykonaniem. Aby wykonać kod znajdujący się wewnątrz funkcji, należy ją wywołać. Funkcje wywołuje się podając jej nazwę oraz nawias okrągły.
Nazwy funkcji w php, w odróżnieniu od zmiennych, są case-insensitive, czyli odwołując się do nich, wielkość liter nie ma znaczenia.

<?php
// definicja funkcji
function moja_funkcja() {
    echo "Pierwsza funkcja";
}
// wywołanie funkcji
moja_funkcja();
?>

Funkcja z parametrem

Wewnątrz nawiasu okragłego możemy dodać parametry, by później podczss wywołania funkcji przekazać do niej argumenty. W przykładzie poniżej utworzymy parametr, który później będzie wyświetlany na ekranie jako paragraf:

<?php
// definicja funkcji
function wyswietl_paragraf($arg) {
    echo "<p>$arg</p>";
}
// wywołanie funkcji
wyswietl_paragraf("Hejo bambero!");
wyswietl_paragraf("To jest kolejne wywołanie.");
?>

Należy pamiętać, że domyślnie do funkcji przekazywany jest argument przez wartość, czyli wewnątrz funkcji operujemy na kopii wartości oryginalego argumentu. Wszelkie zmiany zachodzące wewnątrz funkcji, nie mają wpływu na wartość zmiennej przekazywanej. Przeanalizujmy to na przykładzie, zauważ, że po wywołaniu funkcji, wartość zmiennej $tekst dalej pozostaje taka, jaka była na początku.

<?php
$tekst = "Hejo mandero!";
function wyswietl_paragraf($arg) {
    $arg = "Wartość argumentu zmienionego w funkcji: ".$arg;
    echo "<p>$arg</p>";
}
wyswietl_paragraf($tekst);
echo $tekst;

// Wynik:

// Wartość argumentu zmienionego w funkcji: Hejo mandero!
// Hejo mandero!
?>

Możemy jednak za pomocą operatora & zmienić sposób przekazywania wartości do funkcji, dzięki czemu od teraz argument będzie przekazany przez referencję, a wszelkie zmiany wewnątrz funkcji będą zastosowane do zmiennej przekazywanej, czyli po wywołaniu funkcji zawartość zmiennej $tekst zmieni się.

<?php
$tekst = "Hejo mandero!";
function wyswietl_paragraf(&$arg) {
    $arg = "Wartość argumentu zmienionego w funkcji: ".$arg;
    echo "<p>$arg</p>";
}
wyswietl_paragraf($tekst);
echo $tekst;

// Wynik:

// Wartość argumentu zmienionego w funkcji: Hejo mandero!
// Wartość argumentu zmienionego w funkcji: Hejo mandero!
?>

Parametry domyślne

Jeżeli podczas tworzenia funkcji zdecydujemy się na dodanie parametrów, to później podczas wywołania również będziemy musieli podać odpowiednią ilość argumentów. Czasami możemy chcieć zastosować parametry domyślne, które przyjmą daną wartość, jeśli podczas wywołania nie podamy własnej wartości. Załóżmy, że tworzymy człowieka i zazwyczaj ma on 2 nogi i 2 ręce 😉 choć czasem może zdarzyć się marsjanin, który będzie miał 4 ręce. Możemy więc ustawić ilość rąk na 2, ale w razie potrzeby podać samemu argument, aby zmienić domyślne ustawienia. Przeanalizujmy to na przykładzie:

<?php
function stworz_czlowieka($imie, $liczbaRak=2, $liczbaNog = 2) {
    echo "<p>To jest $imie</p>";
    echo "<p>$imie ma $liczbaRak ręce i $liczbaNog nogi.</p>";
}
stworz_czlowieka("Gienek"); // Podając 1 argument, pozostałe 2 są domyślne
stworz_czlowieka("Emul",4); // Podając 2 argumenty, trzeci jest domyślny
stworz_czlowieka("Gutek",8,4); // Wszystkie argumenty nadpisują te domyślne (Gutek to kosmita ;)

// Wynik:

//To jest Gienek
//Gienek ma 2 ręce i 2 nogi.

//To jest Emul
//Emul ma 4 ręce i 2 nogi.

//To jest Gutek
//Gutek ma 8 ręce i 4 nogi.
?>

Dowolna liczba parametrów

Istnieje też możliwość przekazania do funkcji dowolnej ilości argumentów, robimy to za pomocą operatora … (splat operator). Dzięki takiemu podejściu możemy do funkcji również przekazać zawartość tablicy.

Zwracanie wartości z funkcji

Często będziemy chcieli wykonać pewne czynności wewnątrz funkcji, a następnie zwrócić wartość spowrotem do programu. Robimy to za pomocą słowa kluczowego return.
W przykładzie poniżej przekażemy do funkcji liczbę, a następnie zwrócimy jej potęgę:

<?php
<?php
function poteguj($arg){
    $arg *= $arg;
    return $arg;
}
echo poteguj(5);

// wynik
// 25
?>

Innym przykładem może być filtrowanie wpisu użytkownika do formularza, z którego chcemy się pozbyć białych znaków i zamienić tekst na małe litery:

<?php
function filtruj_tekst($arg){
    $arg = trim($arg); // usuwa białe znaki na początku i na końcu
    $arg = str_replace(' ','',$arg); // usuwa białe znaki wewnątrz
    $arg = strtolower($arg); // zamienia wielkie litery na małe
    return $arg;
}
echo filtruj_tekst("  S i   eMA n O");

// wynik
// siemano
?>
Przewiń do góry