Funkcje w PHP

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Funkcje w PHP — co to jest?

Funkcja w PHP to wydzielony, nazwany fragment kodu, który można wielokrotnie wywoływać z różnymi argumentami. Funkcje pozwalają uniknąć powtarzania kodu, porządkują program i ułatwiają jego rozwój.

W PHP dostępne są dwa rodzaje funkcji:

  • wbudowane — dostarczane przez sam język PHP (strlen, strtoupper, include, setcookie, mysqli_query i setki innych),
  • własne (użytkownika) — pisane przez programistę słowem kluczowym function.

Infografika: funkcje w PHP — własne funkcje definiowane słowem function oraz wbudowane funkcje pogrupowane tematycznie (tekstowe, tablicowe, plikowe, cookies, baza danych, środowisko) z przykładami typowych pytań egzaminacyjnych

To podstawowe pojęcie z kwalifikacji INF.03 (Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych). W pytaniach egzaminacyjnych pojawiają się oba aspekty — pisanie własnych funkcji i znajomość najpopularniejszych wbudowanych.

Definiowanie własnej funkcji

Funkcję definiuje się słowem kluczowym function, nazwą, listą parametrów w nawiasach i blokiem instrukcji w klamrach:

function nazwaFunkcji($parametr1, $parametr2) {
    // instrukcje
    return $wartosc;  // opcjonalne
}

Parametry działają jak zmienne lokalne dostępne wewnątrz funkcji — poza nią nie istnieją.

Przykład — własna funkcja

function powitaj($imie) {
    return "Witaj, $imie!";
}

echo powitaj("Anna");   // Witaj, Anna!
echo powitaj("Piotr");  // Witaj, Piotr!

Wartości domyślne parametrów

Parametr może mieć wartość domyślną, jeśli nie zostanie podany przy wywołaniu:

function powitaj($imie = "Gościu") {
    return "Witaj, $imie!";
}

echo powitaj();          // Witaj, Gościu!
echo powitaj("Anna");    // Witaj, Anna!

Funkcja zwracająca wartość — return

Słowo kluczowe return zwraca wartość i kończy działanie funkcji:

function dodaj($a, $b) {
    return $a + $b;
}

$wynik = dodaj(3, 4);  // 7

Więcej w haśle return PHP.

Najważniejsze funkcje wbudowane PHP

W pytaniach egzaminacyjnych pojawia się stały zestaw wbudowanych funkcji PHP. Najwygodniej pogrupować je tematycznie.

Funkcje tekstowe (string)

FunkcjaCo robiPrzykład
strlendługość ciągustrlen("ala") → 3
strtoupperzamienia na WIELKIE LITERYstrtoupper("ala")"ALA"
strtolowerzamienia na małe literystrtolower("ALA")"ala"
trimusuwa białe znaki z początku i końcatrim(" ala ")"ala"
ltrim / rtrimusuwa białe znaki z lewej / prawej
str_repeatpowtarza znak/ciąg n razystr_repeat("@", 5)"@@@@@"
substrwycina podciągsubstr("ala", 0, 2)"al"
str_replacezamienia fragmentstr_replace("a", "o", "ala")"olo"

Przykład — zmiana na wielkie litery

Aby przekształcić tekst „ala ma psa" na „ALA MA PSA", używa się funkcji strtoupper:

$tekst = "ala ma psa";
$wynik = strtoupper($tekst);  // "ALA MA PSA"

Przykład — n znaków @

Aby wyświetlić ciąg n znaków @, najprościej użyć str_repeat:

echo str_repeat("@", $n);

Można też zrobić to ręcznie pętlą for (jak w klasycznym pytaniu z funkcją znaki()), ale str_repeat to zwięzła odpowiedź wzorcowa.

Przykład — trim

$tekst = "   ala ma kota   ";
echo trim($tekst);  // "ala ma kota" — bez spacji z brzegów

Więcej w haśle strtoupper PHP, strtolower PHP, trim PHP.

Funkcje sprawdzania zmiennych

FunkcjaZwraca true, gdy zmienna jest...
isset($a)ustawiona (różna od NULL, ale 0/"" są ustawione)
empty($a)pusta (NULL, "", 0, "0", false, pusta tablica)
is_null($a)równa NULL
is_numeric($a)liczbą (lub ciągiem liczbowym)
gettype($a)typ zmiennej (string z nazwą typu)

⚠️ Pułapka: funkcja empty() zwraca true także gdy zmienna ma wartość liczbową 0 (zero). Czyli empty(0)true. To częste pytanie egzaminacyjne — wartość 0 traktowana jest jako „pusta".

Aby sprawdzić wartość i typ zmiennej w PHP, używa się funkcji var_dump() (lub print_r() dla samej wartości):

$a = 5;
var_dump($a);  // int(5)

Więcej w haśle isset PHP, empty PHP.

Dołączanie plików — include, require

Aby włączyć do skryptu zawartość innego pliku PHP, używa się include lub require:

include "egzamin.php";       // jeśli plik nie istnieje → ostrzeżenie, skrypt działa dalej
include_once "egzamin.php";  // dołącza tylko raz
require "egzamin.php";       // jeśli plik nie istnieje → błąd krytyczny, skrypt przerwany
require_once "egzamin.php";  // dołącza tylko raz

Typowe pytanie CKE: „aby włączyć do skryptu zawartość pliku egzamin.php" → odpowiedź include "egzamin.php" (lub require).

Cookies (ciasteczka) — setcookie

Funkcją w PHP, która służy do tworzenia ciasteczek (cookies), jest setcookie():

setcookie("nazwa", "wartosc", time() + 3600);  // ważne 1h

Cookie wysyłane jest do przeglądarki w nagłówkach HTTP, więc setcookie() musi być wywołane przed jakimkolwiek echo lub innym wypisaniem.

Więcej w haśle setcookie PHP.

Środowisko serwera — phpinfo, getenv

Aby uzyskać informacje o środowisku pracy serwera obsługującego PHP, używa się funkcji phpinfo():

phpinfo();

Wyświetla pełną stronę HTML z konfiguracją PHP, wersją, modułami, zmiennymi serwera itd. Jest niezastąpione przy diagnostyce, ale w produkcji powinno być wyłączone (ze względu na bezpieczeństwo — ujawnia szczegóły konfiguracji).

Pokrewne:

  • getenv("nazwa") — pobiera konkretną zmienną środowiskową,
  • $_SERVER — superglobalna tablica z danymi o serwerze i żądaniu.

Funkcje bazodanowe

Pełna lista w haśle komunikacja aplikacji z bazą SQL. W skrócie:

FunkcjaRola
mysqli_connectnawiązanie połączenia
mysqli_querywykonanie zapytania
mysqli_fetch_assocpobranie wiersza jako tablicy asocjacyjnej
mysqli_closezamknięcie połączenia
pg_connectpołączenie z PostgreSQL

W PHP, aby poprawnie zakończyć połączenie z bazą MySQL, ostatnim krokiem powinno być mysqli_close().

Funkcje tablicowe

Funkcje do operacji na tablicach to osobna duża grupa. Najczęstsze:

FunkcjaCo robi
countliczba elementów tablicy
sortsortowanie po wartościach (numerycznie)
asortsortowanie po wartościach zachowując klucze (asocjacyjne)
ksortsortowanie po kluczach
array_pushdodaje element na koniec
array_popusuwa ostatni
in_arraysprawdza, czy element istnieje
array_keyszwraca tablicę kluczy
print_rwypisuje strukturę tablicy

Przykład — asort zachowuje klucze

$tab = array(10 => "Perl", 14 => "PHP", 20 => "Python", 22 => "Pike");
asort($tab);
print_r($tab);
// Sortuje po wartościach alfabetycznie:
// 14 => "PHP", 10 => "Perl", 22 => "Pike", 20 => "Python"

Więcej w hasłach asort PHP, print_r PHP.

Rekurencja — funkcja wywołująca samą siebie

Funkcja, która wywołuje samą siebie, to funkcja rekurencyjna (rekurencja). Typowy przykład — silnia:

function silnia($n) {
    if ($n <= 1) return 1;
    return $n * silnia($n - 1);   // wywołanie samej siebie
}

echo silnia(5);  // 120 (5 * 4 * 3 * 2 * 1)

Każda rekurencja musi mieć warunek bazowy (zatrzymujący), inaczej powstaje nieskończona pętla i błąd „stack overflow".

Iteracja po znakach ciągu — typowy wzorzec

W pytaniach często pojawia się kod typu:

$n = '[email protected]';
$dl = strlen($n);
$i = 0;
while ($i < $dl && $n[$i] != '@') {
    echo $n[$i];
    $i++;
}

Co robi ten kod? Wypisuje znaki ciągu aż do napotkania @ — czyli z [email protected] wypisze adres. To wzorzec odczytu części loginowej adresu e-mail.

Funkcja strlen zwraca długość, a $n[$i] — pojedynczy znak ciągu (PHP traktuje string jak tablicę znaków).

Najczęstsze pytania CKE — szybka ściąga

PytanieOdpowiedź
Wyświetlić n znaków @str_repeat("@", $n)
Włączyć plik PHP do skryptuinclude "plik.php"
Stworzyć cookiesetcookie()
Zmienić tekst na WIELKIE LITERYstrtoupper()
Usunąć spacje z brzegów ciągutrim()
Pobrać dane o środowisku serweraphpinfo()
Zakończyć połączenie z MySQLmysqli_close()
Empty(0) dla zmiennej = 0true
Funkcja wywołująca samą siebierekurencja

Częste pomyłki — nie myl tego!

  • function (definicja) ≠ wywołanie funkcjifunction abc() { } to definicja, abc() to wywołanie.
  • funkcja własna ≠ wbudowana — własną piszesz słowem function, wbudowane są gotowe w PHP.
  • empty(0) zwraca true — to częsta pułapka; mimo że 0 to nie jest brak wartości, empty traktuje go jako pusty.
  • issetemptyisset($a) sprawdza czy zmienna istnieje i nie jest NULL; empty($a) czy ma „falsy" wartość (0, "", null, false).
  • includerequire — przy braku pliku include tylko ostrzega, require przerywa skrypt.
  • str_repeat ≠ pętla for z echo — oba dają ten sam efekt, ale str_repeat to wzorcowa, krótsza odpowiedź.
  • parametr musi być przekazany — jeśli funkcja używa $n, a $n nie jest jej parametrem, dostaniesz błąd.
  • return kończy funkcję — kod po return się nie wykona.
  • setcookie przed echo — cookie idzie w nagłówkach HTTP, które wysyła się przed treścią; po pierwszym echo jest już za późno.

Najważniejsze do zapamiętania

Funkcja w PHP to wydzielony fragment kodu wielokrotnego użytku. Definiuje się ją słowem function, wywołuje przez nazwa(arg1, arg2). PHP ma setki wbudowanych funkcji pogrupowanych tematycznie: tekstowe (strtoupper, trim, str_repeat), tablicowe (asort, count), środowiskowe (phpinfo), bazodanowe (mysqli_*), plikowe (include, require), sesji (setcookie), sprawdzające (isset, empty). Rekurencja to funkcja wywołująca samą siebie. empty(0) zwraca true — to pułapka egzaminacyjna. Aby wyświetlić n znaków @, wzorcowa odpowiedź to str_repeat("@", $n).