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_queryi setki innych), - własne (użytkownika) — pisane przez programistę słowem kluczowym
function.

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)
| Funkcja | Co robi | Przykład |
|---|---|---|
strlen | długość ciągu | strlen("ala") → 3 |
strtoupper | zamienia na WIELKIE LITERY | strtoupper("ala") → "ALA" |
strtolower | zamienia na małe litery | strtolower("ALA") → "ala" |
trim | usuwa białe znaki z początku i końca | trim(" ala ") → "ala" |
ltrim / rtrim | usuwa białe znaki z lewej / prawej | |
str_repeat | powtarza znak/ciąg n razy | str_repeat("@", 5) → "@@@@@" |
substr | wycina podciąg | substr("ala", 0, 2) → "al" |
str_replace | zamienia fragment | str_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
| Funkcja | Zwraca 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:
| Funkcja | Rola |
|---|---|
mysqli_connect | nawiązanie połączenia |
mysqli_query | wykonanie zapytania |
mysqli_fetch_assoc | pobranie wiersza jako tablicy asocjacyjnej |
mysqli_close | zamknięcie połączenia |
pg_connect | połą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:
| Funkcja | Co robi |
|---|---|
count | liczba elementów tablicy |
sort | sortowanie po wartościach (numerycznie) |
asort | sortowanie po wartościach zachowując klucze (asocjacyjne) |
ksort | sortowanie po kluczach |
array_push | dodaje element na koniec |
array_pop | usuwa ostatni |
in_array | sprawdza, czy element istnieje |
array_keys | zwraca tablicę kluczy |
print_r | wypisuje 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
| Pytanie | Odpowiedź |
|---|---|
| Wyświetlić n znaków @ | str_repeat("@", $n) |
| Włączyć plik PHP do skryptu | include "plik.php" |
| Stworzyć cookie | setcookie() |
| Zmienić tekst na WIELKIE LITERY | strtoupper() |
| Usunąć spacje z brzegów ciągu | trim() |
| Pobrać dane o środowisku serwera | phpinfo() |
| Zakończyć połączenie z MySQL | mysqli_close() |
| Empty(0) dla zmiennej = 0 | true |
| Funkcja wywołująca samą siebie | rekurencja |
Częste pomyłki — nie myl tego!
function(definicja) ≠ wywołanie funkcji —function abc() { }to definicja,abc()to wywołanie.- funkcja własna ≠ wbudowana — własną piszesz słowem
function, wbudowane są gotowe w PHP. empty(0)zwracatrue— to częsta pułapka; mimo że0to nie jest brak wartości,emptytraktuje go jako pusty.isset≠empty—isset($a)sprawdza czy zmienna istnieje i nie jest NULL;empty($a)czy ma „falsy" wartość (0,"",null,false).include≠require— przy braku plikuincludetylko ostrzega,requireprzerywa skrypt.str_repeat≠ pętlaforzecho— oba dają ten sam efekt, alestr_repeatto wzorcowa, krótsza odpowiedź.- parametr musi być przekazany — jeśli funkcja używa
$n, a$nnie jest jej parametrem, dostaniesz błąd. returnkończy funkcję — kod poreturnsię nie wykona.setcookieprzedecho— cookie idzie w nagłówkach HTTP, które wysyła się przed treścią; po pierwszymechojest 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).