php programowanie

PHP 3 – Funkcje – definiowanie, zakresy, parametry i wbudowane

Oto trzecia część naszej podróży z PHP! Tym razem skupimy się na jednym z kluczowych elementów, jakim są funkcje. Dlaczego są tak ważne? Otóż, dzięki nim nasz kod staje się bardziej uporządkowany i łatwiejszy w zarządzaniu. Funkcje pozwalają nam na wielokrotne wykorzystywanie tego samego fragmentu kodu, eliminując potrzebę jego ciągłego powtarzania. W tym artykule, który jest skierowany głównie do uczniów technikum informatycznego, wprowadzimy Was w świat funkcji w PHP. Pokażemy, jak je definiować, wywoływać, omówimy zakres działania zmiennych wewnątrz funkcji, parametry, które możemy do nich przekazać, a także wartości domyślne. Nie zabraknie również przykładów praktycznych oraz omówienia wybranych funkcji wbudowanych, które są niezwykle przydatne w codziennej pracy programisty. Gotowi? Zaczynamy!

1. Definiowanie i Wywoływanie Funkcji

Definiowanie funkcji w PHP jest stosunkowo proste i odbywa się za pomocą słowa kluczowego function, po którym następuje nazwa funkcji oraz zestaw nawiasów, w których można określić parametry. Ciało funkcji zawiera kod, który ma zostać wykonany po jej wywołaniu.

Przykład:

function powitanie() {
echo "Witaj w świecie PHP!";
}

Wywoływanie funkcji odbywa się poprzez podanie jej nazwy wraz z nawiasami. Jeśli funkcja przyjmuje parametry, w nawiasach należy podać odpowiednie argumenty.

Zadanie: Napisz funkcję, która wyświetla powitanie z imieniem użytkownika.

Rozwiązanie:

function powitanie($imie) {
echo "Witaj, " . $imie . "!";
}
powitanie("Janek"); // Wywołanie naszej funkcji

2. Zakres Zmiennych

Zakres zmiennych odnosi się do obszaru kodu, w którym zmienne są dostępne. W PHP, zmienne zdefiniowane poza funkcją mają zakres globalny, a te zdefiniowane wewnątrz funkcji – lokalny.

Zadanie: Zilustruj różnicę między zmienną globalną a lokalną.

Rozwiązanie:

$x = 5; // Zmienna globalna

function testZakresu() {
$y = 10; // Zmienna lokalna
echo $y;
}

testZakresu();
// echo $y; // takie wywołanie zmiennej $y pokaże nam błąd, gdyż $y jest zmienną lokalną zawartą wewnątrz funkcji.

3. Parametry Funkcji i Wartości Domyślne

Funkcje w PHP mogą przyjmować parametry, które pozwalają na przekazanie do funkcji danych z zewnątrz. Parametry te mogą mieć również wartości domyślne, co pozwala na wywołanie funkcji bez konieczności podawania argumentów dla wszystkich parametrów.

Zadanie: Napisz funkcję, która dodaje dwie liczby. Drugi parametr funkcji powinien mieć wartość domyślną równą 0.

Rozwiązanie:

function dodaj($liczba1, $liczba2 = 0) {
return $liczba1 + $liczba2;
}
echo dodaj(5, 3); // Wyświetli 8
echo dodaj(5); // Wyświetli 5

4. Funkcje Wbudowane

PHP posiada szeroki zakres funkcji wbudowanych, które wykonują różnorodne zadania, od manipulacji ciągami znaków po operacje na plikach i obsługę błędów.

Zadanie: Użyj funkcji str_replace do zastąpienia słowa „świat” słowem „PHP” w ciągu znaków „Witaj, świat!”. Rozwiązanie:

$tekst = "Witaj, świat!";
$nowyTekst = str_replace("świat", "PHP", $tekst);
echo $nowyTekst; // Wyświetli "Witaj, PHP!"

Funkcje w PHP są potężnym narzędziem, pozwalającym na efektywną organizację kodu, unikanie powtórzeń oraz łatwe zarządzanie złożonością projektów. Przez zrozumienie i wykorzystanie funkcji, parametrów, zakresów zmiennych oraz funkcji wbudowanych, studenci mogą znacząco poprawić jakość i efektywność swojego kodu.

5. Przykłady przydatnych wbudowanych funkcji w PHP

PHP oferuje szeroką gamę funkcji wbudowanych, które są nieocenioną pomocą w codziennej pracy programisty. Oto lista najbardziej przydatnych i najczęściej wykorzystywanych funkcji wbudowanych w PHP:

  1. Manipulacja ciągami znaków
    • strlen($string) – Zwraca długość ciągu znaków.
      • echo strlen(„Witaj świecie”); // Wyświetli 12
    • str_replace($search, $replace, $subject) – Zastępuje wszystkie wystąpienia ciągu szukanego ciągiem zastępującym.
      • echo str_replace(„świat”, „PHP”, „Witaj świecie”); // Wyświetli „Witaj PHP”
    • strpos($haystack, $needle) – Znajduje pozycję pierwszego wystąpienia podciągu w ciągu.
      • echo strpos(„Witaj świecie”, „świecie”); // Wyświetli 6
    • strtolower($string) – Konwertuje wszystkie znaki w ciągu na małe litery.
      • echo strtolower(„Witaj ŚWIECIE”); // Wyświetli „witaj świecie”
    • strtoupper($string) – Konwertuje wszystkie znaki w ciągu na wielkie litery.
      • echo strtoupper(„witaj świecie”); // Wyświetli „WITAJ ŚWIECIE”
    • substr($string, $start, $length) – Zwraca część ciągu.
      • echo substr(„Witaj świecie”, 6, 7); // Wyświetli „świecie”
  2. Manipulacja tablicami
    • array_merge($array1, $array2) – Scala jedną lub więcej tablic.
      • print_r(array_merge([1, 2, 3], [4, 5, 6])); // Wyświetli Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )
    • array_pop(&$array) – Usuwa ostatni element tablicy.
      • $arr = [1, 2, 3];
        array_pop($arr);
        print_r($arr); // Wyświetli Array ( [0] => 1 [1] => 2 )
    • array_push(&$array, $value1, $value2, ...) – Dodaje jeden lub więcej elementów na końcu tablicy.
      • $arr = [1, 2];
        array_push($arr, 3, 4);
        print_r($arr); // Wyświetli Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
    • array_shift(&$array) – Usuwa pierwszy element tablicy i zwraca go.
      • $arr = [1, 2, 3];
        array_shift($arr);
        print_r($arr); // Wyświetli Array ( [0] => 2 [1] => 3 )
    • array_unshift(&$array, $value1, $value2, ...) – Dodaje jeden lub więcej elementów na początku tablicy.
      • $arr = [2, 3];
        array_unshift($arr, 0, 1);
        print_r($arr); // Wyświetli Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 )
    • in_array($needle, $haystack) – Sprawdza, czy w tablicy znajduje się dany element.
      • echo in_array(2, [1, 2, 3]); // Wyświetli 1 (true)
    • sort(&$array) – Sortuje tablicę.
      • $arr = [3, 1, 2];
        sort($arr);
        print_r($arr); // Wyświetli Array ( [0] => 1 [1] => 2 [2] => 3 )
  3. Obsługa plików
    • fopen($filename, $mode) – Otwiera plik lub URL.
      • $file = fopen("test.txt", "w");
        fwrite($file, "Witaj świecie");
        fclose($file);
    • fclose($handle) – Zamyka otwarty wskaźnik pliku.
      • $file = fopen("przykladowy_plik.txt", "w");
        fwrite($file, "Witaj świecie w PHP!");
        fclose($file);
    • fwrite($handle, $string) – Zapisuje ciąg znaków do pliku.
      • $file = fopen("przykladowy_plik.txt", "w");
        fwrite($file, "To jest test.");
        fclose($file);
    • fread($handle, $length) – Odczytuje plik do określonej długości.
      • $file = fopen("przykladowy_plik.txt", "r");
        $content = fread($file, filesize("przykladowy_plik.txt"));
        fclose($file);echo $content;
    • file_get_contents($filename) – Odczytuje cały plik do ciągu.
      • file_put_contents("test.txt", "Witaj świecie");
        echo file_get_contents("test.txt"); // Wyświetli "Witaj świecie"
    • file_put_contents($filename, $data) – Zapisuje ciąg do pliku.
  4. Obsługa czasu i daty
    • date($format, $timestamp) – Formatuje datę/czas.
      • echo date(„Y-m-d”); // Wyświetli bieżącą datę w formacie RRRR-MM-DD
    • time() – Zwraca bieżący czas jako znacznik czasu Unix.
      • echo time(); // Wyświetli bieżący znacznik czasu Unix
        echo strtotime(„+1 day”, time()); // Wyświetli znacznik czasu Unix dla jutra
    • strtotime($time) – Przekształca dowolny opis tekstowy daty/czasu na znacznik czasu Unix.
      • echo strtotime("now"), "\n"; // Zwraca bieżący znacznik czasu Unix
        echo strtotime("10 September 2000"), "\n"; // Zwraca znacznik czasu Unix dla podanej daty
        echo strtotime("+1 day"), "\n"; // Zwraca znacznik czasu Unix dla dnia następującego po bieżącym dniu
        echo strtotime("+1 week"), "\n"; // Zwraca znacznik czasu Unix dla tygodnia następującego po bieżącym tygodniu
        echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n"; // Zwraca znacznik czasu Unix dla określonego przesunięcia czasowego od teraz
        echo strtotime("next Thursday"), "\n"; // Zwraca znacznik czasu Unix dla najbliższego czwartku od dzisiaj
        echo strtotime("last Monday"), "\n"; // Zwraca znacznik czasu Unix dla ostatniego poniedziałku przed dzisiaj
  5. Funkcje matematyczne
    • rand($min, $max) – Generuje losową liczbę.
      • echo rand(1, 10); // Wyświetli losową liczbę między 1 a 10
    • round($val, $precision) – Zaokrągla liczbę do określonej precyzji.
      • echo round(3.14159, 2); // Wyświetli 3.14
    • ceil($value) – Zaokrągla wartości w górę.
      • echo ceil(4.3); // Wyświetli 5
        echo ceil(9.999); // Wyświetli 10
        echo ceil(-3.14); // Wyświetli -3
    • floor($value) – Zaokrągla wartości w dół.
      • echo floor(4.3); // Wyświetli 4
      • echo floor(9.999); // Wyświetli 9
      • echo floor(-3.14); // Wyświetli -4
  6. Obsługa JSON
    • json_encode($value) – Koduje wartość do formatu JSON.
      • $json = json_encode(["imie" => "Jan", "wiek" => 30]);
        print_r(json_decode($json, true)); // Wyświetli skojarzoną tablicę
    • json_decode($json) – Dekoduje ciąg JSON.
      • $json = '{"imie": "Jan", "wiek": 30}';
        $decoded = json_decode($json);// Dostęp do właściwości obiektu
        echo $decoded->imie; // Wyświetli "Jan"
        echo $decoded->wiek; // Wyświetli 30// Aby uzyskać tablicę asocjacyjną zamiast obiektu, ustaw drugi argument na true
        $decodedArray = json_decode($json, true);// Dostęp do danych jako tablicy asocjacyjnej
        echo $decodedArray['imie']; // Wyświetli "Jan"
        echo $decodedArray['wiek']; // Wyświetli 30
  7. Obsługa błędów
    • error_reporting($level) – Ustawia poziom raportowania błędów.
      • // Wyłącza raportowanie wszystkich błędów
        error_reporting(0);// Raportuje tylko błędy wykonania
        error_reporting(E_ERROR | E_WARNING | E_PARSE);// Raportuje wszystkie błędy PHP (zalecane podczas rozwoju)
        error_reporting(E_ALL);Funkcja error_reporting pozwala kontrolować, które błędy PHP są wyświetlane. Można ją wykorzystać do ukrycia ostrzeżeń i notatek podczas produkcji lub do pokazywania wszystkich błędów podczas fazy rozwoju.
    • set_error_handler($callback) – Ustawia funkcję obsługi błędów użytkownika.
      • function mojObslugaBledow($errno, $errstr, $errfile, $errline) {
        echo "<b>Błąd:</b> [$errno] $errstr<br>";
        echo " Błąd w linii $errline w pliku $errfile<br>";
        echo "PHP " . PHP_VERSION . " (" . PHP_OS . ")<br>";
        die();
        }// Ustawienie własnej funkcji do obsługi błędów
        set_error_handler("mojObslugaBledow");// Wygenerowanie błędu (dla testu)
        echo($test);

Używając funkcji set_error_handler, można zdefiniować własną funkcję, która zostanie wywołana zamiast standardowego mechanizmu obsługi błędów PHP. Pozwala to na niestandardowe obsługiwanie błędów, na przykład logowanie błędów do pliku zamiast wyświetlania ich użytkownikowi lub wysyłanie powiadomień e-mail w przypadku krytycznych błędów.

Te dwie funkcje, są kluczowe dla zaawansowanej obsługi błędów w aplikacjach PHP, pozwalając na większą kontrolę nad tym, jak błędy są raportowane i obsługiwane.

Podsumowanie

To tylko niektóre z funkcji wbudowanych w PHP, które czynią ten język tak potężnym narzędziem dla programistów. Każda z nich ma swoje specyficzne zastosowania i może znacznie przyspieszyć oraz ułatwić proces tworzenia aplikacji webowych.