Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: PHP

Słowa kluczowe: Debugowanie Instrukcja if else w PHP PHP Walidacja kodu Średnik w PHP

Które z poniższych zdarzeń w skrypcie wykonywanym przez PHP 8 przerwie jego działanie błędem krytycznym (Fatal error)?

A. wywołanie funkcji, która nie została nigdzie zdefiniowana
Dobrze. Wywołanie nieistniejącej funkcji kończy się błędem krytycznym Call to undefined function.
B. odczyt nieistniejącego klucza z tablicy $_POST
Źle. Brak klucza w tablicy daje ostrzeżenie Undefined array key, a nie zatrzymanie skryptu.
C. wypisanie instrukcją echo pustego ciągu znaków
Źle. echo z pustym ciągiem jest poprawne i po prostu nic nie wypisuje.
D. odczyt zmiennej, której wcześniej nie nadano wartości
Źle. W PHP 8 to tylko ostrzeżenie Undefined variable, skrypt działa dalej.
Błąd krytyczny powoduje wywołanie funkcji, która nie została nigdzie zdefiniowana. PHP 8 zgłasza wtedy wyjątek Error z komunikatem „Call to undefined function”, a jeśli nikt go nie przechwyci, skrypt kończy się komunikatem Fatal error i dalszy kod się nie wykonuje. Do zapamiętania: ostrzeżenie (Warning) i uwaga (Notice) pozwalają skryptowi działać dalej, a Fatal error i błąd składni (Parse error) go zatrzymują. Częste przyczyny takiego błędu to literówka w nazwie funkcji, brak dołączonego pliku przez require albo nieaktywne rozszerzenie, na przykład mysqli. Wyjątek Error można przechwycić blokiem try i catch. W PHP 7 i nowszych wiele dawnych błędów krytycznych jest zgłaszanych jako wyjątki, co pozwala je obsłużyć.
Łatwo uznać każdy komunikat PHP za błąd, który zatrzymuje skrypt. Odczyt zmiennej bez nadanej wartości w PHP 8 daje ostrzeżenie „Undefined variable”, a zmienna zachowuje się jak null - wykonywanie trwa dalej. Podobnie odczyt nieistniejącego klucza, na przykład $_POST['imie'] przy pustym formularzu, kończy się ostrzeżeniem „Undefined array key”, a nie przerwaniem skryptu; zapobiega temu sprawdzenie przez isset albo operator ??. Wypisanie pustego ciągu przez echo "" jest całkowicie poprawne i niczego nie wyświetla. Zatrzymanie skryptu następuje dopiero przy wywołaniu nieistniejącej funkcji, bo interpreter nie ma czego wykonać i zgłasza błąd krytyczny. Różnica między ostrzeżeniem a błędem krytycznym jest ważna przy szukaniu usterek: ostrzeżenie zwykle wskazuje problem z danymi, a błąd krytyczny - problem w samym kodzie, na przykład literówkę w nazwie funkcji. Komunikaty ostrzeżeń widać na stronie, gdy włączone jest wyświetlanie błędów, na przykład w XAMPP-ie.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.