W skrypcie PHP należy utworzyć stałą, której wartości nie będzie można zmienić w dalszej części programu. Którą funkcję PHP należy w tym celu zastosować?
A. setcookie
B. mysqli_change_user
C. session_destroy
D. define
Funkcja define() jest właściwym wyborem, bo w PHP służy do tworzenia stałych, czyli nazwanych wartości, których nie powinno się zmieniać w dalszej części działania programu. Przykład praktyczny: define('MAX_LOGIN_ATTEMPTS', 5); albo define('APP_VERSION', '1.2.0');. Potem można używać MAX_LOGIN_ATTEMPTS w różnych miejscach skryptu bez znaku $ przed nazwą. To ważna różnica względem zwykłych zmiennych. Stałe dobrze nadają się do przechowywania wartości konfiguracyjnych, limitów, nazw katalogów, wersji aplikacji czy ustawień, które mają być niezmienne. Z mojego doświadczenia wynika, że stosowanie stałych poprawia czytelność kodu, bo od razu widać, że dana wartość ma specjalne znaczenie i nie jest przypadkową liczbą wpisaną w środku programu. Dobrą praktyką jest zapisywanie nazw stałych wielkimi literami, np. DB_HOST albo DEFAULT_LANGUAGE, chociaż PHP technicznie dopuszcza różne nazwy. Warto też wiedzieć, że w klasach często spotyka się składnię const, natomiast define() jest klasyczną funkcją do definiowania stałych globalnych w skrypcie PHP.
W tym pytaniu łatwo pomylić kilka funkcji PHP, bo wszystkie wyglądają jak typowe funkcje systemowe, ale dotyczą zupełnie innych obszarów działania aplikacji webowej. setcookie() nie tworzy stałej w kodzie programu. Ta funkcja wysyła do przeglądarki nagłówek HTTP ustawiający ciasteczko, czyli mały fragment danych przechowywany po stronie klienta. Używa się jej na przykład do zapamiętania preferencji językowych albo identyfikatora sesji, ale nie do deklarowania niezmiennych wartości w samym skrypcie. session_destroy() również nie pasuje, bo służy do niszczenia aktywnej sesji PHP, czyli usuwa dane sesyjne powiązane z użytkownikiem, na przykład podczas wylogowania. To mechanizm zarządzania stanem użytkownika, a nie definiowania elementów programu. mysqli_change_user() jest jeszcze z innej dziedziny, bo dotyczy połączenia z bazą danych MySQL i pozwala zmienić użytkownika używanego przez istniejące połączenie mysqli. Typowy błąd myślowy polega tu na tym, że ktoś widzi funkcję związaną z konfiguracją albo zarządzaniem danymi i zakłada, że może ona ustawiać stałe. W PHP stała to konkretna konstrukcja języka: nazwana wartość dostępna bez znaku $, której nie nadpisujemy jak zwykłej zmiennej. Do tego właśnie służy define(). W praktyce, jeżeli chcesz mieć np. stały limit prób logowania, ścieżkę bazową aplikacji albo nazwę środowiska, używasz define('ENVIRONMENT', 'production');, a nie funkcji od ciasteczek, sesji czy bazy danych.