Co to są stałe w PHP? Stałe w PHP, podobnie jak zmienne w PHP, służą do przechowywania danych. Na tym jednak podobieństwa się kończą. Różnią je składnia, sposób użycia, i zastosowania. W tym rozdziale dowiesz się wszystkiego o stałych w PHP — jak je tworzyć, po co je tworzyć i jak się nimi posługiwać.
Zacznę od być może najbardziej nurtującego Cię pytania. Kiedy należy używać stałych? Odpowiedź jest bardzo prosta — stałych należy używać do definiowania wartości, które nie zmieniają się w trakcie działania skryptu lub w ogóle nigdy się nie zmieniają.
Doskonałym przykładem jest liczba Pi, której wartość nigdy się nie zmienia. Dlatego, jeśli chcesz używać przybliżonej wartości tej liczby, możesz zdefiniować stałą o nazwie PI i ją w niej zapisać. Mam jednak dla Ciebie dobrą wiadomość, w PHP jest dostępna stała o nazwie M_PI, która reprezentuje właśnie tę wartość.
Krótko mówiąc, jeśli chcesz używać jakiejś niezmiennej wartości w PHP, zapisz ją w stałej.
Jaka jest różnica między stałą a zmienną
Zanim przejdziemy do praktycznych konkretów, czyli sposobów definiowania i użycia stałych w PHPs, przeanalizujemy różnice między stałymi i zmiennymi w tym języku.
Po pierwsze, inaczej niż w przypadku zmiennych PHPPHP, nazw stałych nie poprzedza się znakiem dolara, dlatego w kodzie PHP niejednokrotnie możesz natknąć się na instrukcje w tym rodzaju:
echo PHP_VERSION;
Ta instrukcja wyświetla numer aktualnie używanej wersji PHP, która jest zapisana w predefiniowanej stałej o nazwie PHP_VERSION.
Po drugie, stałych nie można usuwać. Jeśli w skrypcie zdefiniujemy stałą, to nie możemy w innej części tego skryptu usunąć jej definicji za pomocą funkcji w rodzaju unset()
, która usuwa zmienne PHP.
Po trzecie, czy wiesz jaki jest zasięg stałych w PHP? Stałe w tym języku automatycznie mają globalny zakres dostępności w obrębie skryptu. Można ich używać podobnie, jak zmiennych superglobalnych, w dowolnym miejscu.
To tyle, jeśli chodzi o różnice między stałymi i zmiennymi w PHP. Teraz pokażę Ci, jak definiować stałe oraz jak ich używać. Zacznę od objaśnienia kwestii nazewnictwa.
Nazwy stałych w PHP
Stała PHP jest prostym identyfikatorem odnoszącym się do pewnej wartości, której nie można zmieniać w trakcie działania skryptu (stąd nazwa stała).
W nazwach stałych wielkość liter jest rozróżniana, a więc stała o nazwie PI nie jest tym samym, co stała o nazwie pi. Warto jednak pamiętać, że w języku PHP panuje powszechnie przyjęta konwencja, zgodnie z którą nazwy stałych zapisuje się samymi wielkimi literami. Ułatwia to ich dostrzeżenie w kodzie i odróżnianie od innych konstrukcji.
Poza tym zasady tworzenia nazw stałych są takie same, jak ogólne zasady tworzenia identyfikatorów w PHP, które obowiązują też zmienne w PHP.
Krótko mówiąc, prawidłowa nazwa stałej w PHP zaczyna się od znaku podkreślenia lub litery, po których może występować dowolna liczba kolejnych znaków podkreślenia i liter. Jeśli chcesz trzymać się przyjętych konwencji (a warto), to w nazwach stałych używaj samych wielkich liter.
Jak definiować stałe w PHP
Najprostszym sposobem na zdefiniowanie stałej w PHP jest użycie słowa kluczowego PHP const, np.:
const PI = 3.14;
Z jego użyciem wiążą się jednak pewne ograniczenia. Wybór metody definiowania wpływa na to, jakie dostępne są typy stałych w PHP. Stała zdefiniowana za pomocą słowa kluczowego PHP const
może zawierać tylko wartości skalarne (int
, float
, bool
i string) oraz tablice stałe zawierające same wartości skalarne.
Ponadto słowo kluczowe PHP const
może być używane tylko na najwyższym poziomie zakresu dostępności PHP, a więc za jego pomocą nie można definiować stałych w funkcjach, pętlach, czy instrukcjach warunkowych.
Drugim sposobem na zdefiniowanie stałej w PHP jest użycie funkcji define()
. Pozwala ona definiować stałe o wartości dowolnego typu. Może nią być nawet tablica albo obiekt.
Jako pierwszy argument należy przekazać nazwę stałej w postaci łańcucha znaków, a w drugim argumencie należy podać wartość, np.:
define("OWADY", [
"Turkuć podjadek",
"Złodziejaszek rypidełko",
"Zyzuś tłuścioch"
]);
echo OWADY[1]; // Wynik: Złodziejaszek rypidełko
Kiedy już utworzymy stałą lub stałe w skrypcie, możemy zechcieć coś z nimi zrobić. Jeśli chcemy tylko wyświetlić wartość stałej, to możemy użyć choćby konstrukcji językowej PHP echo, jak pokazałem w powyższym przykładzie. Ale istnieją też inne sposoby dostępu do wartości stałych. Poznasz je w następnej sekcji.
Jak uzyskać dostęp do wartości stałych w PHP
Jeśli znamy nazwę stałej, to jej wartość uzyskamy bez problemu w dokładnie taki sam sposób, jak uzyskujemy wartości zmiennych, np. przez konstrukcję PHP echo, konstrukcję PHP print, funkcję PHP var_dump()
itd.
Jeśli natomiast nazwa stałej jest nieznana, bo na przykład zwraca ją funkcja albo jest przechowywana w zmiennej, to można użyć funkcji constant()
. Ponadto funkcja ta umożliwia pracę między innymi ze stałymi klas, np.:
class Test {
const HEIGHT = 10;
}
$value = "HEIGHT";
echo constant("Test::" . $value);
Ten przykład może ci się wydawać mało niezrozumiały. Wszystko stanie się zupełnie jasne, kiedy poznasz techniki programowania obiektowego w PHP. Na razie wyjaśnię tylko, że w tym przypadku konstrukcja echo wyświetli wartość stałej HEIGHT zdefiniowanej w klasie Test
.
Jeśli chcesz uzyskać wykaz wszystkich stałych dostępnych w skrypcie, to możesz użyć funkcji PHP get_defined_constants()
. Pamiętaj, że zwraca ona wszystkie dostępne stałe, a więc nie tylko zdefiniowane przez ciebie, ale także standardowo dostępne w PHP, udostępnione przez różne rozszerzenia itd. Może ich być bardzo dużo. Sprawdź u siebie:
print_r(get_defined_constants());
Ponadto istnieje możliwość sprawdzenia, czy istnieje stała o określonej nazwie. Służy do tego funkcja defined()
, która przyjmuje nazwę stałej i zwraca prawdę, jeśli stała o takiej nazwie istnieje, lub fałsz w przeciwnym przypadku, np.:
define("STAŁA", "wartość stałej");
echo defined("STAŁA"); // Wynik: 1, czyli prawda
Stałe predefiniowane
Jeśli wywołałeś u siebie funkcję get_defined_constants()
i wyświetliłeś jej wynik, to z pewnością już wiesz, że PHP standardowo udostępnia bardzo dużo stałych. Są to tak zwane stałe predefiniowane PHP.
Część z nich należy do rdzenia języka, a więc są dostępne w każdej kompilacji. Na przykład stała PHP_VERSION zawiera numer obecnie używanej wersji PHP, a stała PHP_OS pozwala sprawdzić, dla jakiego systemu została skompilowana używana wersja PHP.
Na stronie Stałe predefiniowane PHP znajdziesz listę wszystkich predefiniowanych stałych należących do rdzenia PHP, a więc dostępnych w każdej kompilacji.
A teraz mam dla Ciebie zaskakującą wiadomość. W języku PHP istnieją też tak zwane stałe magiczne, które tak naprawdę wcale nie są stałymi. Dziwne? W następnej sekcji dowiesz się, o co chodzi.

Stałe magiczne PHP
Oprócz wszystkich wymienionych do tej pory rodzajów stałych, w języku PHP istnieje jeszcze specjalna grupa konstrukcji o nazwie stałe magiczne. Są one o tyle dziwne, że tak naprawdę wcale nie są stałymi, ale używa się ich w podobny sposób, jak stałych.
Na przykład magiczna stała __DIR__ wskazuje katalog, w którym znajduje się plik, a więc jej wartość może się zmieniać w zależności od położenia pliku.
Ponadto w nazwach stałych magicznych wielkość liter nie ma znaczenia, a więc można napisać zarówno __dir__, jak i __DIR__, a efekt w każdym przypadku będzie taki sam.
Poniżej znajduje się lista przedstawiająca wszystkie stałe magiczne PHP. Została ona zaczerpnięta z dokumentacji PHP pod adresem https://www.php.net/manual/en/language.constants.magic.php.
- __LINE__
- Bieżący numer wiersza w pliku.
- __FILE__
- Pełna ścieżka do pliku wraz z nazwą pliku.
- __DIR__
- Ścieżka do katalogu, w którym znajduje się plik.
- __FUNCTION__
- Nazwa funkcji.
- __CLASS__
- Nazwa klasy.
- __TRAIT__
- Nazwa cechy.
- __METHOD__
- Nazwa metody klasy.
- __PROPERTY__
- Nazwa własności.
- __NAMESPACE__
- Nazwa bieżącej przestrzeni nazw.
- NazwaKlasy::class
- Pełna nazwa klasy.
W ten magiczny sposób dotarliśmy do końca rozdziału o stałych. W kolejnym rozdziale poznasz operatory PHP, bez których trudno sobie wyobrazić jakiekolwiek programowanie. Kilku z nich już używaliśmy wielokrotnie. Teraz dowiesz się o nich trochę więcej i poznasz pozostałe.
Podsumowanie

- Nazwy stałych, w odróżnieniu od nazw zmiennych, nie zaczynają się od znaku dolara.
- W nazwach stałych wielkość liter ma znaczenie.
- W języku PHP panuje powszechnie przyjęta konwencja zapisu nazw stałych samymi wielkimi literami.
- Wartości stałej nie można zmienić ani usunąć w trakcie działania skryptu.
- Stałe mają globalny zakres dostępności.
- Stałe w PHP można definiować za pomocą słowa kluczowego PHP const i przy użyciu funkcji
define()
. - Dostęp do wartości stałej można uzyskać w taki sam sposób, jak do wartości zmiennej.
- Dodatkowo dostęp do wartości stałych można uzyskiwać za pomocą funkcji
constant()
. - Funkcja PHP
get_defined_constants()
zwraca wszystkie stałe PHP dostępne w skrypcie. - Za pomocą funkcji
defined()
można sprawdzić, czy istnieje stała o określonej nazwie. - W każdym skrypcie dostępny jest duży zbiór zmiennych predefiniowanych.
- W każdym skrypcie dostępny jest zestaw stałych magicznych.
Pytania
- Jakie są zasady nadawania nazw stałym w PHP?
- Czym różnią się stałe PHP od zmiennych PHP?
- Jaki zakres dostępności mają stałe?
- Jak definiuje się stałe w PHP?
- Jakie znasz sposoby dostępu do wartości stałych w PHP?
- Co robi funkcja
get_defined_constants()
? - Co robi funkcja
defined()
? - Czym są stałe predefiniowane PHP?
- Czym są stałe magiczne PHP?
Ćwiczenia
- Zdefiniuj stałą o dowolnej nazwie i wartości typu łańcuchowego.
- Zdefiniuj stałą o dowolnej nazwie i wartości typu zmiennoprzecinkowego.
- Zdefiniuj stałą o dowolnej nazwie i tablicy jako wartości.
- Za pomocą funkcji
defined()
sprawdź, czy twoje stałe rzeczywiście istnieją w skrypcie. - Wyświetl numer używanej przez ciebie wersji PHP za pomocą odpowiedniej stałej.
- Wyświetl na stronie wartość dowolnej stałej magicznej.
- Wyświetl wszystkie stałe dostępne w skrypcie za pomocą funkcji
get_defined_constants()
i sprawdź, czy wśród nich znajdują się też stałe zdefiniowane przez ciebie.