czwartek,
Stałe w języku PHP
Niektóre zastosowania stałych są bardzo podobne jak w przypadku zmiennych, jednak istnieje jedna fundamentalna różnica. Nadana im wartość nie może ulec zmianie.
Stałą można zadeklarować za pomocą funkcji define(). Prawidłowa nazwa stałej rozpoczyna się od litery lub podkreślenia, po której następuje dowolna liczba liter, cyfr lub podkreśleń. Zasadę tą można zapisać za pomocą wyrażenia regularnego: ^[a-zA-Z_x80-xff][a-zA-Z0-9_x80-xff]*$. Większość programistów w nazwach stałych stosuje wielkie litery, znacznie zwiększa to czytelność kodu. Dostęp do stałych można uzyskać z dowolnego miejsca w skrypcie, bez względu na zakres. Do stałej można odwołać się za pomocą jej nazwy, jednak nie może ona być ujęta w cudzysłowie lub apostrofach.
define('ROK', 2020);
echo "ROK"; // wyswietli się słowo ROK
echo ROK; // wyswietli się wartość 2020
Stałą można zdefiniować w alternatywny sposób posługując się słowem kluczowym const.
const K = 0.01720209895;
echo K;
Choć to bardzo niezalecane, nazwą stałej może być słowo zastrzeżone. W takim przypadku do stałej nie można odwołać się bezpośrednio, ponieważ zakończy się to błędem powodującym zablokowanie wykonania skryptu.
define('ECHO', 'c');
echo ECHO; // błędne odwołanie do zastrzeżonej nazwy
Do stałych, których nazwa to zastrzeżone słowo, można odwołać się za pomocą funkcji constant().
define('ECHO', 'c');
echo constant('ECHO');
Prawdziwą ciekawostką jest możliwość zdefiniowania stałej, której nazwą jest pusty łańcuch znaków.
define("", '😉');
echo constant("");
Dostępnych jest wiele predefiniowanych stałych, które są tworzone bez ingerencji użytkownika przed wykonaniem skryptu. W przykładzie wyświetlono zapisane w stałej oznaczenie wersji PHP.
echo PHP_VERSION;
W języku PHP dostępne są tzw. magiczne stałe (w rzeczywistości nie są one stałymi). Charakteryzują się one specyficzną nazwą zawierającą na początku i na końcu po dwa podkreślniki. Poniższa instrukcja wyświetli numer wiersza pliku, w którym znajduje się jej wywołanie.
echo __LINE__;
Używanie konwencji nazw przyjętej w przypadku magicznych stałych nie jest wskazane, ponieważ w przyszłości twórcy języka mogą wprowadzić element o dokładnie takiej samej nazwie. W przykładzie zastosowano niezalecaną konwencję.
define('__PHP__', PHP_VERSION . ':' . PHP_OS); // wysoce niezalecana nazwa
echo __PHP__;
Od siódmej wersji PHP w przypadku stałych akceptowane są również wartości tablicowe.
define('UNITS',
[
'cm',
'px',
'cal' => 'inch'
]);
print_r(UNITS);
echo UNITS['cal'];
echo UNITS[0];
/*
Array
(
[0] => cm
[1] => px
[cal] => inch
)
inch
cm
*/
Funkcja define() może przyjąć trzeci, opcjonalny argument, który określa, czy stała zostanie zdefiniowana bez uwzględniania wielkości liter. Domyślną i zalecaną wartością tego argumentu (w przypadku jego braku) jest FALSE i branie pod uwagę wielkości liter. W najnowszej wersji języka, PHP8, którą opublikowano kilka dni temu, parametr ten został usunięty.
define('CKZiU', 65, TRUE);
echo CKZiU; // 65
echo Ckziu; // 65