KWALIFIKACJA INF3 - STYCZEŃ 2016

PYTANIE NR 30.
Interpreter PHP wygeneruje błąd i nie wykona kodu, jeżeli programista
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
W PHP po warunku instrukcji if musi wystąpić instrukcja lub blok w klamrach. Zapis typu if (warunek) else { ... } jest błędem składni (parse error), bo interpreter nie ma "ciała" dla if. Brak wcięć nie wpływa na parsowanie, a puste pole formularza nie musi powodować błędu wykonania.

Pełne wyjaśnienie:

Instrukcja warunkowa w PHP ma ściśle określoną składnię: po if (warunek) musi pojawić się instrukcja albo blok instrukcji ujęty w klamry. Dopiero po takiej instrukcji/bloku może wystąpić część else.

Dlatego sytuacja opisana w poprawnej odpowiedzi (brak średnika/instrukcji po wyrażeniu w if, a następnie wystąpienie else) prowadzi do błędu składni. Interpreter nie potrafi poprawnie sparsować konstrukcji, bo po nawiasie zamykającym warunek oczekuje instrukcji (np. pojedynczego polecenia zakończonego średnikiem) lub bloku { ... }, a napotyka else.

Dlaczego pozostałe odpowiedzi są niepoprawne:

  • "będzie pisał kod bez wcięć." Wcięcia są elementem czytelności i standardów formatowania, ale parser PHP nie wymaga wcięć do poprawnego wykonania kodu.
  • "będzie deklarował zmienne wewnątrz warunku." To może być złą praktyką lub powodować niezamierzone efekty, ale samo w sobie nie musi generować błędu składni, który uniemożliwia wykonanie programu. Kluczowe jest rozróżnienie: co zatrzymuje parsowanie, a co jest tylko ryzykowne logicznie.
  • "pobierze wartość z formularza, w którym pole input nie było wypełnione." Puste pole zwykle skutkuje brakiem wartości lub pustym łańcuchem, co wymaga walidacji, ale nie jest to automatycznie błąd składni. To problem danych wejściowych, a nie konstrukcji języka.

W praktyce, aby uniknąć takich pomyłek, warto stosować klamry nawet dla pojedynczych instrukcji i zwracać uwagę na komunikaty typu Parse error, bo wskazują one na problem w strukturze kodu, a nie w logice działania aplikacji.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Po if (warunek) musi wystąpić instrukcja (np. jedno polecenie zakończone średnikiem) albo blok w klamrach { ... }. Dopiero potem można dodać część else. Brak instrukcji/bloku zwykle kończy się błędem parsowania.
Bo parser po zamknięciu nawiasu warunku oczekuje "ciała" instrukcji if (instrukcji lub bloku). Gdy natrafia od razu na else, konstrukcja jest niekompletna składniowo, więc interpreter zgłasza błąd składni i nie uruchamia skryptu.
Nie. Wcięcia i formatowanie (indentacja) są ważne dla czytelności, ale PHP nie jest językiem zależnym od wcięć. O wykonaniu decydują znaki składniowe, np. średniki, nawiasy i klamry. Brak wcięć może utrudnić debugowanie, ale nie jest błędem składni.
Błąd składni (często komunikat typu Parse error) pojawia się, gdy kod nie spełnia reguł języka i nie da się go poprawnie sparsować. Błąd logiki występuje, gdy kod się uruchamia, ale robi coś niezgodnego z intencją. W pierwszym przypadku skrypt zwykle nie startuje.
Nie zawsze. Puste pole może skutkować brakiem wartości w tablicy danych wejściowych lub pustym łańcuchem, zależnie od sposobu wysłania formularza. To wymaga walidacji i obsługi przypadków brzegowych, ale nie jest to z definicji błąd składni ani gwarantowany błąd wykonania.
Najbezpieczniej używać klamer: if (warunek) { ... } else { ... }. Dzięki temu łatwiej kontrolować zakres instrukcji i unika się problemów, gdy dopisuje się kolejne linie. To dobra praktyka szczególnie w kodzie egzaminacyjnym i projektowym.
Technicznie można stworzyć sytuację, w której ciało instrukcji jest "puste" (np. przez niezamierzone zakończenie instrukcji), ale jest to źródło błędów i nieczytelności. W praktyce należy zawsze umieszczać realną instrukcję lub blok, aby else miało jednoznaczny sens.
W komunikatach błędów składni PHP zwykle podaje typ błędu (np. Parse error) oraz informację o linii, w której parser "zorientował się", że składnia jest niepoprawna. Warto sprawdzić też linie wcześniejsze, bo przyczyna bywa np. brakująca klamra lub średnik.
Średnik kończy większość pojedynczych instrukcji w PHP (np. przypisanie, wywołanie funkcji). Jest kluczowy dla parsera, bo wyznacza koniec polecenia. W konstrukcjach sterujących (np. if) średnik pojawia się na końcu instrukcji wykonywanej warunkowo, a nie po samym warunku.
Typowe są: pomijanie klamer przy wielu liniach, stawianie średnika w nieodpowiednim miejscu, brak jednej z klamer lub nawiasów oraz dopisywanie else bez poprawnie zakończonego if. Pomaga nawyk formatowania kodu i konsekwentne używanie bloków.
info

To pytanie poprawnie rozwiązuje 66% zdających egzamin. średnie

Według specjalistów z branży: "W PHP po warunku instrukcji if musi wystąpić instrukcja lub blok w klamrach."

Źródła:

  • PHP Manual: Control Structures - if, https://www.php.net/manual/en/control-structures.if.php (dostęp: 2026-03-02)
  • PHP Manual: Language Reference - Basic Syntax, https://www.php.net/manual/en/language.basic-syntax.php (dostęp: 2026-03-02)
  • PHP Manual: Variables from external sources (forms), https://www.php.net/manual/en/language.variables.external.php (dostęp: 2026-03-02)

Materiały:

  • Dokumentacja PHP: sekcja o instrukcji if oraz składni alternatywnej
  • Ćwiczenia: celowe wprowadzanie błędów składni i interpretacja komunikatów parse error
  • Materiały o dobrych praktykach: używanie klamer i formatowania kodu (coding standards), jako temat poboczny

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego