Stała jest identyfikatorem (nazwą) dla prostej wartości. Jak sama
nazwa wskazuje, wartość ta nie może się zmieniać podczas działania
skryptu (poza magicznymi stałymi,
które na właściwie nie są stałymi).
Domyślnie, przy stałych uwzględniana jest wielkość liter. Przyjęto, że
stałe są pisane dużymi literami.
Nazwa stałej podlega takim samym zasadom jak każda inna w PHP.
Prawidłowa nazwa stałej rozpoczyna się literą, znakiem podkreślenia
("_"), następnie mogą występować litery, cyfry lub znaki podkreślenia.
Dobrze reprezentuje to takie wyrażenie regularne:
[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
Przykład 13-1. Prawidłowe i nieprawidłowe nazwy stałych
<?php // Poprawne nazwy stałych define("FOO", "cokolwiek"); define("FOO2", "cokolwiek innego"); define("FOO_BAR", "cokolwiek wiecej"); // Nieprawidłowa nazwa stałej define("2FOO", "cokolwiek"); // To jest prawidłowe, ale powinno być unikane: // PHP może pewnego dnia wprowdzić magiczą stałą // która spowoduje załamanie Twojego skryptu define("__FOO__", "cokolwiek"); ?>
|
|
Notatka:
Na nasze potrzeby, litery to a-z, A-Z, oraz znaki ASCII
od 127 do 255 (0x7f-0xff).
Tak jak i superglobals, zasięg stałych jest globalny. Możesz
odwołać się do stałych w dowolnym miejscu w Twojego skryptu, bez uważania na zasięg.
Więcej informacji na temat zasięgu, przeczytasz w sekcji podręcznika
zasięg zmiennych.
Możesz definiować stałą używając funkcji define().
Kiedy stała zostanie zdefiniowana, nie może być już zmieniona albo
undefined.
Tylko skalarne typy danych (boolean, integer, float
i string) mogą być zawarte w stałych.
Nie definiuj stałych typu zasób.
Możesz użyć wartości stałej poprzez zwykłe użycie jej nazwy.
Inaczej niż przy zmiennych, w stałych NIE
powinieneś prepend stałej znakiem $.
Możesz także użyć funkcji constant(), aby
odczytać wartość stałej, której nazwa jest przekazywana dynamicznie.
Użyj funkcji get_defined_constants() aby otrzymać
listę zdefiniowanych stałych.
Notatka:
Stałe i globlane zmienne są pisane inaczej, a to oznacza, że np.
TRUE i $TRUE są różne.
Jeśli użyjesz niezdefiniowanej stałej, PHP przyjmuje, że chcesz użyć
nazwy stałej samej w sobie, poprostu tak jakbyś wywołał ją jako
string (STALA kontra "STALA"). Jeśli to nastąpi zostanie
wygenerowany błąd z poziomu E_NOTICE.
Zobacz także w podręczniku artykuł o tym dlaczego
$foo[bar] jest błędne
(chyba, że wcześniej zdefiniujesz define()
bar jako stałą). Jeśli, chcesz sprawdzić czy stała jest
ustawiona, użyj funkcji defined().
Różnice pomiędzy stałymi, a zmiennymi:
Stałe nie mają znaku dolara ($) przed nazwą;
Stałe mogą być zdefiniowane wyłącznie używając funkcji
define(), nie przez proste przypisanie;
Stałe mogą być definiowane oraz używane wszędzie bez zważania na
zasady dotyczące zakresu ich dostępności;
Stałe nie mogą być redefiniowane lub undefined po tym jak raz zostały
zdefiniowane; i
Stałe mogą zawierać tylko wartości skalarne.
Przykład 13-2. Definiowanie stałych
<?php define("STALA", "Hello world!"); echo STALA; // wyświetli "Hello world!" echo Stala; // wyświetli "Stala" i zgłosi ostrzeżenie ?>
|
|
Patrz także Stałe klasowe.