Lekcja 3: Podstawowa składnia PHP, tagi PHP, komentarze

Witaj w trzeciej lekcji naszego kursu PHP! Po skonfigurowaniu środowiska deweloperskiego, jesteś gotowy, aby zanurzyć się w podstawy samego języka. W tej lekcji nauczysz się fundamentalnych zasad składni PHP, dowiesz się, jak osadzać kod PHP w plikach HTML za pomocą specjalnych tagów, oraz jak używać komentarzy do dokumentowania i wyjaśniania swojego kodu. Zrozumienie tych elementów jest absolutnie kluczowe do pisania czytelnych i działających skryptów PHP.

Podstawowa Składnia PHP

Skrypty PHP są wykonywane na serwerze, a ich wynik jest zazwyczaj wysyłany do przeglądarki jako zwykły kod HTML. Kod PHP może być osadzony bezpośrednio w dokumencie HTML.

Tagi PHP

Aby interpreter PHP wiedział, która część pliku zawiera kod PHP do wykonania, musimy umieścić ten kod wewnątrz specjalnych tagów. Istnieje kilka rodzajów tagów PHP, ale najczęściej używane i zalecane są standardowe tagi:

1. Standardowe Tagi (Zalecane):

<?php
// Tutaj umieszczamy kod PHP
echo "Witaj, świecie PHP!";
?>

Jest to najbardziej uniwersalny i zalecany sposób oznaczania bloków kodu PHP. Gwarantuje on, że Twój kod będzie działał poprawnie na każdym serwerze z zainstalowanym PHP, niezależnie od jego konfiguracji.

2. Krótkie Tagi Echo (Short Echo Tags):

<?= "To jest skrócony zapis dla echo"; ?>

Tag <?= jest skróconą formą dla <?php echo. Jest on zawsze dostępny od PHP 5.4.0 i jest często używany do szybkiego wyświetlania wartości zmiennych lub wyników funkcji bezpośrednio w HTML. Jest to wygodne i czytelne, szczególnie w szablonach.

<p>Nazywam się <?php echo $imie; ?> i mam <?php echo $wiek; ?> lat.</p>
<!-- To samo używając krótkich tagów echo -->
<p>Nazywam się <?= $imie; ?> i mam <?= $wiek; ?> lat.</p>

3. Krótkie Tagi (Short Tags - Nie zalecane):

<?
// Kod PHP
echo "Krótki tag, ale niezalecany.";
?>

Użycie krótkich tagów <? ... ?> zależy od dyrektywy short_open_tag w pliku konfiguracyjnym php.ini. Jeśli jest ona wyłączona (co jest domyślne w wielu konfiguracjach), kod wewnątrz tych tagów nie zostanie zinterpretowany. Aby zapewnić maksymalną przenośność kodu, zaleca się unikanie krótkich tagów i używanie pełnych tagów <?php ... ?>.

4. Tagi ASP-style (Nie zalecane):

<%
// Kod PHP w stylu ASP
echo "Tagi w stylu ASP.";
%>

Tagi <% ... %> oraz <%= ... %> (odpowiednik krótkiego echo) są dostępne tylko wtedy, gdy włączona jest dyrektywa asp_tags w php.ini. Są one rzadko używane i również niezalecane ze względu na przenośność.

Podsumowując: Dla spójności i maksymalnej kompatybilności, zawsze używaj standardowych tagów <?php ... ?> dla bloków kodu oraz tagów <?= ... ?> do szybkiego wyświetlania wartości.

Instrukcje i Średniki

Kod PHP składa się z serii instrukcji. Każda prosta instrukcja w PHP musi być zakończona średnikiem (;). Średnik informuje interpreter PHP, że dana instrukcja została zakończona i można przejść do następnej.

<?php
echo "Pierwsza instrukcja";
$a = 5; // Druga instrukcja
$b = $a + 10; // Trzecia instrukcja
echo "Wynik to: " . $b; // Czwarta instrukcja
?>

Pominięcie średnika na końcu instrukcji jest jednym z najczęstszych błędów składniowych popełnianych przez początkujących programistów PHP i prowadzi do błędu parsowania (Parse error).

Jedynym wyjątkiem, gdzie średnik na końcu instrukcji może być pominięty, jest ostatnia instrukcja w bloku PHP, tuż przed zamykającym tagiem ?>. Jednak dobrą praktyką jest zawsze umieszczanie średnika po każdej instrukcji, nawet tej ostatniej, dla czytelności i uniknięcia problemów przy dodawaniu kolejnych linii kodu.

<?php
echo "To zadziała"
?>

<?php
echo "To jest lepsza praktyka";
?>

Bloki kodu, takie jak definicje funkcji, instrukcje warunkowe (if, else) czy pętle (for, while), używają nawiasów klamrowych { ... } do grupowania instrukcji i nie wymagają średnika po zamykającym nawiasie klamrowym bloku.

Wielkość Liter (Case Sensitivity)

W PHP wielkość liter ma znaczenie w niektórych przypadkach, a w innych nie:

<?php
$kolor = "czerwony";
echo $kolor; // Wyświetli "czerwony"
// echo $Kolor; // To spowoduje błąd (Notice: Undefined variable: Kolor), ponieważ $Kolor to inna zmienna
?>
<?php
echo "Witaj!"; // Działa
ECHO "Witaj ponownie!"; // Też działa

function mojaFunkcja() {
    echo "Funkcja działa!";
}

mojaFunkcja(); // Działa
MOJAFUNKCJA(); // Też działa
?>

Mimo że PHP pozwala na taką elastyczność, dobrą praktyką jest zachowanie spójności w używaniu wielkości liter. Powszechnie przyjęte konwencje to:

Przestrzeganie spójnego stylu nazewnictwa znacznie poprawia czytelność kodu.

Białe Znaki

Białe znaki (spacje, tabulatory, nowe linie) są w większości ignorowane przez interpreter PHP. Oznacza to, że możesz formatować swój kod w sposób, który poprawia jego czytelność, używając wcięć i pustych linii do oddzielania bloków logicznych.

<?php
// Ten kod jest trudny do czytania
$x=10;$y=20;$z=$x+$y;echo $z;

// Ten sam kod, ale sformatowany dla lepszej czytelności
$x = 10;
$y = 20;

$z = $x + $y;
echo $z;
?>

Prawidłowe stosowanie białych znaków jest kluczowe dla utrzymania czytelności kodu, zwłaszcza w większych projektach i podczas pracy w zespole.

Osadzanie PHP w HTML

Jak już wspomniano, PHP jest zaprojektowany do osadzania w kodzie HTML. Możesz przełączać się między trybem HTML a trybem PHP wielokrotnie w jednym pliku.

<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <title>Przykład Osadzania PHP</title>
</head>
<body>
    <h1>Lista Produktów</h1>
    <?php
        $produkty = ["Jabłka", "Banany", "Pomarańcze"];
        // Sprawdzamy, czy tablica produktów nie jest pusta
        if (!empty($produkty)) {
            echo "<ul>";
            // Iterujemy przez tablicę produktów używając pętli foreach
            foreach ($produkty as $produkt) {
                // Dla każdego produktu wyświetlamy element listy
                echo "<li>" . htmlspecialchars($produkt) . "</li>";
            }
            echo "</ul>";
        } else {
            // Jeśli tablica jest pusta, wyświetlamy odpowiedni komunikat
            echo "<p>Brak produktów do wyświetlenia.</p>";
        }
    ?>

    <p>To jest zwykły tekst HTML poza blokiem PHP.</p>

    <p>Rok: <?= date("Y") ?></p> <!-- Użycie krótkiego taga echo -->

    <?php
        // Kolejny blok PHP
        $userLoggedIn = false; // Załóżmy, że użytkownik nie jest zalogowany
    ?>

    <?php if ($userLoggedIn): ?>
        <p>Witaj, zalogowany użytkowniku!</p>
        <!-- Tutaj mogłaby być dalsza treść HTML widoczna tylko dla zalogowanych -->
    <?php else: ?>
        <p>Proszę się <a href="login.php">zalogować</a>.</p>
        <!-- Alternatywna składnia dla instrukcji warunkowych w szablonach -->
    <?php endif; ?>

</body>
</html>

W powyższym przykładzie:

Umiejętne przeplatanie PHP i HTML jest fundamentalne przy tworzeniu dynamicznych stron internetowych. Ważne jest jednak, aby dążyć do oddzielenia logiki aplikacji (PHP) od prezentacji (HTML/CSS), co często osiąga się za pomocą systemów szablonów lub wzorca MVC (Model-View-Controller), o których dowiesz się więcej w bardziej zaawansowanych częściach nauki programowania.

Komentarze w PHP

Komentarze to fragmenty kodu, które są ignorowane przez interpreter PHP. Służą one do dodawania notatek, wyjaśnień lub tymczasowego wyłączania fragmentów kodu. Dobrze napisane komentarze znacznie poprawiają czytelność i łatwość utrzymania kodu, zarówno dla Ciebie w przyszłości, jak i dla innych programistów pracujących nad tym samym projektem.

PHP obsługuje kilka stylów komentarzy:

1. Komentarze Jednoliniowe w Stylu C++:

Zaczynają się od podwójnego ukośnika (//) i trwają do końca linii lub do zamknięcia bieżącego bloku PHP (?>).

<?php
// To jest komentarz jednoliniowy
$x = 5; // Komentarz może być również po instrukcji
echo $x;
?>

2. Komentarze Jednoliniowe w Stylu Powłoki (Shell-style):

Zaczynają się od znaku krzyżyka (#) i również trwają do końca linii lub zamknięcia bloku PHP.

<?php
# To jest również komentarz jednoliniowy
$y = 10;
# echo $y; # Ta linia jest wykomentowana i nie zostanie wykonana
?>

Chociaż oba style komentarzy jednoliniowych działają tak samo, styl // jest znacznie częściej spotykany i zalecany w kodzie PHP.

3. Komentarze Wieloliniowe (Blokowe) w Stylu C:

Zaczynają się od /* i kończą na */. Mogą obejmować wiele linii i są przydatne do pisania dłuższych wyjaśnień lub tymczasowego wyłączania większych fragmentów kodu.

<?php
/*
To jest komentarz
wieloliniowy.
Może on obejmować wiele linii tekstu.
*/
$z = 15;
echo $z;

/*
Możemy też wykomentować blok kodu:
$a = 1;
$b = 2;
echo $a + $b;
*/
echo "Ten kod zostanie wykonany.";
?>

Ważna uwaga: Komentarzy wieloliniowych w stylu C nie można zagnieżdżać. Oznacza to, że pierwszy napotkany znacznik */ zakończy cały komentarz, nawet jeśli wewnątrz znajdował się inny otwierający znacznik /*.

<?php
/*
  To jest zewnętrzny komentarz.
  /* To jest próba zagnieżdżenia komentarza, ale nie zadziała poprawnie. */
  Ten fragment już nie jest komentarzem, co spowoduje błąd!
*/ // Ten znacznik zakończył zewnętrzny komentarz wcześniej niż zamierzano.
?>

Kiedy i Jak Komentować?

<?php
/**
 * Oblicza sumę dwóch liczb.
 *
 * @param int $a Pierwsza liczba.
 * @param int $b Druga liczba.
 * @return int Suma $a i $b.
 */
function dodaj($a, $b) {
    // Zwraca sumę podanych argumentów
    return $a + $b;
}
?>

Pamiętaj, że komentarze są dla ludzi, nie dla interpretera. Pisz je tak, aby były pomocne dla Ciebie i innych.

Podsumowanie Lekcji

W tej lekcji poznałeś absolutne podstawy składni PHP. Nauczyłeś się, jak używać tagów PHP (<?php ... ?> i <?= ... ?>) do osadzania kodu PHP w plikach HTML. Zrozumiałeś znaczenie średników na końcu instrukcji oraz zasady dotyczące wielkości liter w nazwach zmiennych, funkcji i słów kluczowych. Dowiedziałeś się także, jak ważne są białe znaki dla czytelności kodu. Na koniec omówiliśmy różne rodzaje komentarzy (jednoliniowe //, # oraz wieloliniowe /* ... */) i dobre praktyki ich stosowania.

Te fundamentalne elementy będą Ci towarzyszyć na każdym etapie nauki i pracy z PHP. W następnej lekcji zajmiemy się jednym z najważniejszych konceptów w programowaniu: zmiennymi i typami danych w PHP. Będziesz mógł zacząć przechowywać i manipulować informacjami w swoich skryptach!


Zadanie praktyczne

Utwórz plik HTML o nazwie lekcja3.php (pamiętaj o rozszerzeniu .php, aby serwer przetworzył kod PHP). W tym pliku:

  1. Dodaj podstawową strukturę HTML (<!DOCTYPE html>, <html>, <head>, <body>).
  2. W sekcji <head> ustaw tytuł strony na "Moja Trzecia Strona PHP".
  3. W sekcji <body>, używając tagów PHP, wyświetl następujące informacje, każdą w osobnym paragrafie (<p>):
    • Swoje imię.
    • Aktualny dzień tygodnia (np. "Poniedziałek" - użyj funkcji date('l')).
    • Wynik prostego działania matematycznego, np. 5 * 7.
  4. Dodaj co najmniej jeden komentarz jednoliniowy i jeden komentarz wieloliniowy w swoim kodzie PHP, wyjaśniając, co robią poszczególne jego części.
  5. Otwórz plik lekcja3.php w przeglądarce poprzez serwer skonfigurowany za pomocą Laravel Herd (np. http://nazwa-folderu-projektu.test/lekcja3.php, jeśli plik jest w głównym folderze projektu, lub dostosuj ścieżkę).

Pokaż przykładowe rozwiązanie
<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <title>Moja Trzecia Strona PHP</title>
</head>
<body>
    <h1>Informacje wygenerowane przez PHP</h1>

    <?php
        // To jest komentarz jednoliniowy: wyświetlamy imię.
        $mojeImie = "Krystyna"; // Zastąp swoim imieniem
        echo "<p>Moje imię to: " . $mojeImie . "</p>";

        /*
         * To jest komentarz wieloliniowy.
         * Poniżej wyświetlimy aktualny dzień tygodnia.
         * Użyjemy do tego funkcji date() z odpowiednim formatem.
         */
        $dzienTygodnia = date('l'); // 'l' zwraca pełną nazwę dnia tygodnia
        echo "<p>Dzisiaj jest: " . $dzienTygodnia . "</p>";

        // Wykonujemy i wyświetlamy wynik działania matematycznego
        $wynikDzialania = 5 * 7;
        echo "<p>Wynik działania 5 * 7 to: " . $wynikDzialania . "</p>";
    ?>

    <p>A to jest zwykły HTML pod blokiem PHP.</p>

</body>
</html>
            

Zadanie do samodzielnego wykonania

Eksperymentuj z różnymi rodzajami tagów PHP (standardowe, krótkie echo). Spróbuj celowo pominąć średnik na końcu jednej z instrukcji PHP i zaobserwuj, jaki błąd wyświetli przeglądarka (lub jego brak, jeśli to ostatnia instrukcja). Spróbuj także użyć zmiennej z inną wielkością liter niż ta zadeklarowana i zobacz, co się stanie. Zapisz swoje obserwacje w pliku tekstowym.


FAQ - Podstawowa Składnia PHP

Czy muszę używać tagu zamykającego ?> na końcu pliku PHP?

Jeśli plik zawiera wyłącznie kod PHP, zaleca się pominięcie tagu zamykającego ?>. Zapobiega to przypadkowemu wysłaniu białych znaków (np. spacji, nowych linii) po tagu zamykającym, co mogłoby powodować problemy z nagłówkami HTTP lub innymi operacjami wyjściowymi.

Co się stanie, jeśli umieszczę kod HTML wewnątrz tagów PHP bez użycia echo?

Jeśli umieścisz kod HTML bezpośrednio wewnątrz tagów <?php ... ?> bez użycia instrukcji takiej jak echo do jego wyświetlenia, PHP potraktuje go jako niepoprawną składnię PHP i zgłosi błąd parsowania (Parse error). Kod HTML powinien znajdować się poza tagami PHP lub być wyprowadzany przez PHP za pomocą np. echo.

Czy mogę mieszać różne style komentarzy w jednym skrypcie?

Tak, możesz używać komentarzy //, # i /* ... */ w tym samym pliku PHP. Ważne jest jednak, aby być konsekwentnym i używać ich w sposób, który poprawia czytelność kodu, a nie ją zaciemnia. Najczęściej używa się // dla krótkich notatek i /* ... */ dla dłuższych bloków lub DocBlocks.

Jakie są najczęstsze błędy składniowe dla początkujących w PHP?

Najczęstsze błędy to brakujące średniki na końcu instrukcji, literówki w nazwach zmiennych (pamiętając o wrażliwości na wielkość liter), niepoprawne użycie cudzysłowów lub apostrofów przy ciągach znaków, oraz niezamknięte nawiasy lub tagi PHP.

Czy edytor kodu może pomóc mi unikać błędów składniowych?

Tak, zdecydowanie! Nowoczesne edytory kodu (jak VS Code, PhpStorm) oferują podświetlanie składni w czasie rzeczywistym, wykrywanie niektórych błędów (tzw. linting) oraz autouzupełnianie, co znacznie redukuje liczbę prostych błędów składniowych i literówek.

Czy PHP jest językiem kompilowanym czy interpretowanym?

PHP jest językiem interpretowanym. Oznacza to, że kod jest odczytywany i wykonywany linia po linii przez interpreter PHP za każdym razem, gdy skrypt jest uruchamiany. Nie ma oddzielnego etapu kompilacji do kodu maszynowego przed wykonaniem, jak w językach takich jak C++ czy Java (choć PHP używa mechanizmu opcode cache i JIT w nowszych wersjach do optymalizacji).

Gdzie znajdę oficjalną dokumentację składni PHP?

Oficjalna i najbardziej wiarygodna dokumentacja PHP, w tym szczegółowy opis składni, funkcji i najlepszych praktyk, znajduje się na stronie php.net/manual/pl/ (dostępna również w języku polskim). Jest to nieocenione źródło wiedzy dla każdego programisty PHP.

Czy mogę umieścić tag <script> (JavaScript) wewnątrz pliku .php?

Tak, plik .php może zawierać dowolny kod HTML, w tym tagi <script> z kodem JavaScript. Pamiętaj, że kod PHP jest wykonywany na serwerze i generuje HTML, który jest wysyłany do przeglądarki. Kod JavaScript w tagach <script> zostanie wykonany przez przeglądarkę po stronie klienta, już po przetworzeniu PHP.