Dla każdego wykonywanego skryptu. Wiele z tych stałych jest zdefiniowanych przez różne moduły i będą obecne tylko wtedy, gdy w rezultacie te moduły będą dostępne dynamiczne ładowanie lub w wyniku statycznej kompilacji.

Istnieje dziewięć magicznych stałych, które zmieniają swoje znaczenie w zależności od kontekstu, w jakim są używane. Na przykład wartość __LINIA__ zależy od wiersza w skrypcie, w którym określona jest ta stała. Wszystkie magiczne stałe są rozwiązywane w czasie kompilacji, w przeciwieństwie do zwykłych stałych, które są rozwiązywane w czasie wykonywania. W stałych specjalnych nie jest rozróżniana wielkość liter i są one wymienione poniżej:

Niektóre magiczne stałe PHP
Nazwa Opis
__LINIA__ Bieżący numer wiersza w pliku.
__PLIK__ Pełna ścieżka i nazwa bieżącego pliku z rozwiniętymi dowiązaniami symbolicznymi. W przypadku użycia w dołączonym pliku, zwracana jest nazwa danego pliku.
__KATALOG__ Katalog plików. W przypadku użycia w dołączonym pliku, zwracany jest katalog tego pliku. To jest równoznaczne z dzwonieniem nazwa(__PLIK__). Zwrócona nazwa katalogu nie kończy się ukośnikiem, z wyjątkiem katalogu głównego.
__FUNKCJONOWAĆ__ Nazwa funkcji lub (zamknięcie) w przypadku funkcji anonimowej.
__KLASA__ Nazwa klasy. Ta nazwa zawiera nazwę przestrzeni nazw, w której została zadeklarowana klasa (na przykład foo\bar). Zauważ, że od PHP 5.4 __CLASS__ działa również w cechach. W przypadku użycia w metodach cech, __CLASS__ jest nazwą klasy, w której te metody są używane.
__CECHA__ Nazwa cechy. Ta nazwa zawiera nazwę przestrzeni nazw, w której zadeklarowano cechę (na przykład foo\bar).
__METODA__ Nazwa metody klasy.
__PRZESTRZEŃ NAZW__ Nazwa bieżącej przestrzeni nazw.
Nazwa klasy::klasa Pełna nazwa klasy (z przestrzenią nazw). Zobacz także ::class .

Zobacz też pobierz_klasę(), get_object_vars(), plik istnieje() oraz funkcja_istnieje().

Lista zmian

14 lat temu

Różnica pomiędzy
__FUNKCJA__ i __METODA__ jak w PHP 5.0.4 to jest

FUNCTION__ zwraca tylko nazwę funkcji

podczas gdy __METODA__ zwraca nazwę klasy wraz z nazwą funkcji

klasowa sztuczka
{
funkcja doit()
{
echo __FUNKCJA__;
}
funkcja doitagain()
{
echo __METODA__;
}
}
$obj=nowa sztuczka();
$obj->doit();
wyjściem będzie ---- doit
$obj->doitagain();
wyjściem będzie ----- sztuczka::doitagain

13 lat temu

Magiczna stała __CLASS__ dobrze uzupełnia funkcję get_class().

Czasami musisz znać oba:
- nazwa dziedziczonej klasy
- nazwa faktycznie realizowanej klasy

Oto przykład pokazujący możliwe rozwiązanie:

klasa podstawowa_klasa
{
funkcja powiedz_a()
{

" ;
}

Funkcja say_b()
{

" ;
}

class klasa_pochodna rozszerza base_class
{
funkcja powiedz_a()
{
rodzic::powiedz_a();
echo ""a" - powiedział ". __KLASA__ . "
" ;
}

Funkcja say_b()
{
rodzic::powiedz_b();
echo ""b" - powiedział ". get_class($this) . "
" ;
}
}

$obj_b = nowa klasa_pochodna();

$obj_b -> powiedz_a();
Echo "
" ;
$obj_b -> powiedz_b();

?>

Wynik powinien wyglądać mniej więcej tak:

"a" - powiedział base_class
"a" - powiedział klasa_pochodna

"b" - powiedział klasa_pochodna
"b" - powiedział klasa_pochodna

3 lata temu

Zwróć uwagę na małą niespójność podczas używania __KLASA__ i __METODA__ w cechach (stand php 7.0.4): Podczas gdy __KLASA__ działa jak reklamowana i zwraca dynamicznie nazwę klasy, w której jest używana cecha, __METODA__ w rzeczywistości doda nazwę cechy zamiast Nazwa klasy!

8 lat temu

Nie ma możliwości zaimplementowania wstecznie kompatybilnego __DIR__ w wersjach wcześniejszych niż 5.3.0.

Jedyna rzecz, która możesz zrobić to wykonać wyszukiwanie rekurencyjne i zamienić na dirname(__FILE__):
odnaleźć. -typ f -print0 | xargs -0 sed -i "s/__DIR__/dirname(__FILE__)/"

5 lat temu

Wiele uwag dotyczy tutaj definiowania magicznej stałej __DIR__ dla wersji PHP, które nie obsługują tej funkcji. Oczywiście możesz zdefiniować tę magiczną stałą dla wersji PHP, które nie mają jeszcze tej stałej, ale przestanie ona działać, gdy tylko użyjesz stałej w dołączonym pliku, który może znajdować się w innym katalogu niż plik definiujący stałą __DIR__ . Jako taka, stała straciła swoją *magię* i byłaby raczej bezużyteczna, chyba że upewnisz się, że wszystkie swoje dołączenia znajdują się w tym samym katalogu.

Podsumowując: uwaga w gmail dot com dotycząca tego, czy można zdefiniować stałe magiczne, jest poprawne, ale stwierdzenie, że definiowanie __DIR__ nie jest bezużyteczne, nie jest!

7 lat temu

Nie możesz sprawdzić, czy zdefiniowana jest magiczna stała. Oznacza to, że nie ma sensu sprawdzać, czy __DIR__ jest zdefiniowany, a następnie go definiować. `defined("__DIR__")` zawsze zwraca fałsz. Definiowanie __DIR__ po cichu nie powiedzie się w PHP 5.3+. Może to powodować problemy ze zgodnością, jeśli Twój skrypt zawiera inne skrypty.

echo (zdefiniowane ("__DIR__" ) ? "__DIR__ jest zdefiniowane" : "__DIR__ NIE jest zdefiniowane" . PHP_EOL );
echo (zdefiniowane ("__PLIK__" ) ? "__PLIK__ jest zdefiniowany" : "__PLIK__ NIE jest zdefiniowany" . PHP_EOL );
echo (zdefiniowane ("PHP_VERSION") ? "PHP_VERSION jest zdefiniowane" : "PHP_VERSION NIE jest zdefiniowane" ). PHP_EOL ;
echo "Wersja PHP: " . PHP_VERSION . PHP_EOL ;
?>
wyjście:
__DIR__ NIE jest zdefiniowany
__PLIK__ NIE jest zdefiniowany
PHP_VERSION jest zdefiniowana
Wersja PHP: 5.3.6

Ostatnia aktualizacja: 1.11.2015

Stałe, podobnie jak zmienne, przechowują określoną wartość, tylko w przeciwieństwie do zmienna wartość stałe można ustawić tylko raz, a potem już nie możemy ich zmieniać. Na przykład zdefiniujmy stałą liczbową:

Do zdefiniowania stałej używana jest instrukcja define, która ma następującą postać: define(string $nazwa, string $wartość, bool $case_sen=false) . Parametr $name jest nazwą stałej, a parametr $value jest jej wartością. Trzeci opcjonalny parametr trwa logiczne prawda czy fałsz . Jeśli wartość jest fałszywa, to przy użyciu stałej jej przypadek zostanie uwzględniony, jeśli prawda, przypadek nie będzie brany pod uwagę. W naszym przypadku trzeci parametr nie jest używany, więc domyślnie przyjmuje wartość false.

Po zdefiniowaniu stałej możemy jej używać jak zwykłej zmiennej. Jedynym wyjątkiem jest to, że nie możemy zmienić jego wartości. Kolejną różnicą w stosunku do zmiennej jest to, że nie trzeba używać znaku $. Czyli wyrażenie LICZBA=33; nie będzie działać.

Predefiniowane stałe

Oprócz stałych tworzonych przez programistę, PHP ma kilka wbudowanych stałych:

    FILE__ : przechowuje pełną ścieżkę i nazwę bieżącego pliku

    LINE__ : przechowuje bieżący numer wiersza, który przetwarza interpreter

    DIR__ : przechowuje katalog bieżącego pliku

    FUNKCJA__ : nazwa przetwarzanej funkcji

    CLASS__ : nazwa aktualnej klasy

    METODA__ : nazwa przetwarzanej metody

    NAMESPACE__ : nazwa bieżącej przestrzeni nazw

Na przykład, wydrukujmy bieżący wiersz wykonywalny i nazwę pliku:

Sprawdzanie istnienia stałej

Aby sprawdzić, czy stała jest zdefiniowana, możemy użyć funkcji bool defined(string $name). Jeśli zdefiniowana jest stała $name, funkcja zwróci true

(PHP 5 >= 5.3.0, PHP 7)

Ta lista pytań jest podzielona na dwie części: pytania ogólne i niektóre szczegóły dotyczące implementacji, które są przydatne do pełniejszego zrozumienia.

Najpierw pytania ogólne.

  1. Jeśli nie używam przestrzeni nazw, czy którekolwiek z nich należy uznać za ważne?
  2. Jak używać klas wewnętrznych lub globalnych w przestrzeni nazw?
  3. Jak używać funkcji klas w przestrzeniach nazw lub stałych w ich własnej przestrzeni nazw?
  4. Jaka jest nazwa \moje imię lub \Nazwa nawrócony?
  5. Jak imię takie jak moje imię nawrócony?
  6. Jako niekwalifikowana nazwa klasy, taka jak Nazwa nawrócony?
  7. Jako niekwalifikowana nazwa funkcji lub niekwalifikowana nazwa stałej, na przykład Nazwa nawrócony?

Niektóre szczegóły implementacji przestrzeni nazw, które są przydatne do zrozumienia.

  1. Importowane nazwy nie mogą kolidować z klasami zdefiniowanymi w tym samym pliku.
  2. Ani funkcje, ani stałe nie mogą być importowane za pomocą instrukcji posługiwać się.
  3. Nazwy dynamicznych przestrzeni nazw (identyfikatory ujęte w cudzysłów) muszą być pomijane przez znak odwrotnego ukośnika.
  4. Nie można odwoływać się do niezdefiniowanych stałych za pomocą odwrotnego ukośnika. Wyrzucany jest błąd krytyczny
  5. Nie można zastąpić stałych specjalnych, takich jak NULL, TRUE, FALSE, ZEND_THREAD_SAFE lub ZEND_DEBUG_BUILD

Jeśli nie używam przestrzeni nazw, czy którekolwiek z nich należy uznać za ważne?

Nie. Przestrzenie nazw nie mają wpływu na żaden istniejący kod w jakiejkolwiek formie ani na żaden pisany kod, który nie zawiera przestrzeni nazw. Możesz napisać taki kod, jeśli chcesz:

Beispiel #1 Dostęp do klas globalnych poza przestrzenią nazw

$a = nowa \ stdClass ;
?>

Jest to funkcjonalnie równoważne z następującym:

Beispiel #2 Dostęp do klas globalnych poza przestrzenią nazw

$a = nowa klasa standardowa ;
?>

Jak używać klas wewnętrznych lub globalnych w przestrzeni nazw?

Beispiel #3 Dostęp do klas wewnętrznych w przestrzeniach nazw

przestrzeń nazw foo ;
$a = nowa \ stdClass ;

test funkcji(\ArrayObject $typehintexample = null )()

$a = \ DirectoryIterator :: CURRENT_AS_FILEINFO ;

// rozszerzenie klasy wewnętrznej lub globalnej
klasa MyException rozszerza\Exception()
?>

Jak używać funkcji klas w przestrzeniach nazw lub stałych w ich własnej przestrzeni nazw?

Beispiel #4 Dostęp do klas wewnętrznych, funkcji lub stałych w przestrzeniach nazw

przestrzeń nazw foo ;

classMojaKlasa()

// użycie klasy z bieżącej przestrzeni nazw
test funkcji (MyClass $typehintexample = null ) ()
// inny sposób na użycie klasy z bieżącej przestrzeni nazw
test funkcji(\foo\MyClass $typehintexample = null )()

// rozszerzenie klasy z bieżącej przestrzeni nazw
class Extended extends MojaKlasa()

// dostęp do funkcji globalnej
$a = \globalfunc();

// dostęp do stałej globalnej
$b = \ INI_ALL ;
?>

Jaka jest nazwa \moje imię lub \Nazwa nawrócony?

Nazwy zaczynające się na \ są zawsze przekonwertowane na to, jak wyglądają, tj. \moje imię- to właściwie moje imię, oraz \Wyjątek- to jest Wyjątek.

Przykład #5 Nazwy bezwzględne

przestrzeń nazw foo ;
$a = nowa\moja\nazwa(); // tworzy instancję klasy "my\name"
echo \strlen("cześć"); // wywołuje funkcję "strlen"
$a = \ INI_ALL ; // zmiennej $a przypisana jest wartość stałej "INI_ALL"
?>

Jak imię takie jak moje imię nawrócony?

Nazwy zawierające odwrotny ukośnik, ale nie zaczynające się od niego, takie jak moje imię

mój inna nazwa, to ten synonim dotyczy mój w moje imię.

moje imię.

Przykład #6 Pełne imiona i nazwiska

przestrzeń nazw foo ;
użyj blah \ blah jako foo ;

$a = nowy mój\nazwa(); // tworzy instancję klasy "foo\my\name"
foo\bar::nazwa(); // wywołuje metodę statyczną "name" w klasie "blah\blah\bar"
mój\bar(); // wywołuje funkcję "foo\my\bar"
$a = mój\ SŁUPEK ; // przypisuje zmiennej $a wartość stałej "foo\my\BAR"
?>

Jako niekwalifikowana nazwa klasy, taka jak Nazwa nawrócony?

Nazwy klas, które nie zawierają odwrotnego ukośnika, takie jak Nazwa można przekonwertować na dwa różne sposoby.

Jeśli istnieje wyrażenie importu, które tworzy synonim Nazwa inna nazwa, wtedy używany jest ten synonim.

W przeciwnym razie bieżąca nazwa przestrzeni nazw staje się prefiksem do moje imię.

Przykład #7 Niekwalifikowane nazwy klas

przestrzeń nazw foo ;
użyj blah \ blah jako foo ;

$a = nowa nazwa(); // tworzy instancję klasy "foo\name"
foo::nazwa(); // wywołuje metodę statyczną "name" w klasie "blah\blah"
?>

Jako niekwalifikowana nazwa funkcji lub niekwalifikowana nazwa stałej, na przykład Nazwa nawrócony?

Nazwy funkcji lub stałych, które nie zawierają ukośnika odwrotnego, na przykład Nazwa można przekonwertować na dwa różne sposoby.

Po pierwsze, bieżąca nazwa przestrzeni nazw staje się prefiksem do Nazwa.

Następnie, jeśli stała lub funkcja Nazwa nie istnieje w bieżącej przestrzeni nazw, używana jest stała lub funkcja globalna Nazwa jeśli istnieje.

Przykład #8 Niekwalifikowane nazwy funkcji lub stałych

przestrzeń nazw foo ;
użyj blah \ blah jako foo ;

const FOO = 1 ;

funkcja moja()()
functionfoo()()
sortowanie funkcji (& $a )
{
\sort($a); // wywołuje funkcję globalną "sort"
$a = array_flip($a);
zwróć $a ;
}

mój(); // wywołuje "foo\my"
$a = strlen("cześć"); // wywołuje funkcję globalną „strlen”, ponieważ „foo\strlen” nie istnieje
$arr = tablica(1 , 3 , 2 );
$b = sortuj($arr); // wywołuje funkcję "foo\sort"
$c = foo(); // wywołuje funkcję "foo\foo" - nie stosuje się importów

$a = FOO ; // ustawia zmienną $a na wartość stałej "foo\FOO" - nie stosuje się importów
$b = INI_WSZYSTKO ; // przypisuje wartość stałej globalnej "INI_ALL" zmiennej $b
?>

Importowane nazwy nie mogą kolidować z klasami zdefiniowanymi w tym samym pliku.

Dozwolone są następujące kombinacje skryptów:

przestrzeń nazw my \ stuff ;
classMojaKlasa()
?>

przestrzeń nazw inny ;
klasa()
?>

przestrzeń nazw my \ stuff ;
dołącz "plik1.php" ;
dołącz "inny.php" ;


$a = nowa MojaKlasa ; // tworzy instancję klasy "thing" z przestrzeni nazw "inny"
?>

Nie ma konfliktu nazw, mimo że klasa Moja klasa istnieje w przestrzeni nazw moje rzeczy ponieważ definicja MyClass znajduje się w osobnym pliku. Jednak poniższy przykład powoduje wystąpienie krytycznego błędu konfliktu nazw, ponieważ klasa MyClass jest zdefiniowana w tym samym pliku, co instrukcja use.

przestrzeń nazw my \ stuff ;
użyj innego \ czegoś jako MyClass ;
classMojaKlasa() // błąd krytyczny: MojaKlasa jest w konflikcie z instrukcją importu
$a = nowa MojaKlasa ;
?>

Zagnieżdżone przestrzenie nazw są niedozwolone.

PHP nie pozwala na zagnieżdżanie przestrzeni nazw.

przestrzeń nazw moje\rzeczy(
zagnieżdżona przestrzeń nazw (
classfoo()
}
}
?>

Jednak symuluj zagnieżdżone przestrzenie nazw, takie jak:

przestrzeń nazw moje\rzeczy\zagnieżdżone(
classfoo()
}
?>

Przed PHP 5.6 ani funkcje, ani stałe nie mogły być importowane za pomocą posługiwać się.

Przed PHP 5.6 jedyne elementy, na które ma wpływ operator posługiwać się to przestrzenie nazw i nazwy klas. Aby skrócić długie nazwy stałych lub funkcji, zaimportuj ich zawartość do przestrzeni nazw.

kopalnia przestrzeni nazw ;
użyj ultra\długiego\ns\nazwa ;

$a = nazwa \ STAŁA ;
nazwa\funkcja();
?>

Od PHP 5.6 możliwe jest importowanie i tworzenie aliasów dla funkcji i nazw stałych.

Nazwy dynamicznych przestrzeni nazw (identyfikatory ujęte w cudzysłów) muszą być pomijane przez znak odwrotnego ukośnika.

Ważne jest, aby to przedstawić, ponieważ ukośnik odwrotny jest używany jako znak zmiany znaczenia w ciągach. Musi być zawsze zduplikowany, gdy jest używany wewnątrz ciągu, w przeciwnym razie istnieje ryzyko niezamierzonych konsekwencji:

Przykład nr 9 Pułapki podczas używania nazwy przestrzeni nazw wewnątrz łańcucha w podwójnym cudzysłowie

$a = "niebezpieczne\nazwa" ; // \n to znak nowej linii w ciągu znaków w cudzysłowie!
$obj = nowy $a ;

$a = "not\at\all\dangerous" ; // i nie ma problemu.
$obj = nowy $a ;
?>

W ciągach z pojedynczym cudzysłowem ukośnik odwrotny jako separator jest bezpieczniejszy, ale zalecana praktyka unikania ukośnika odwrotnego we wszystkich ciągach jest nadal najlepszą praktyką.

Nie można odwoływać się do niezdefiniowanych stałych za pomocą odwrotnego ukośnika. Wyrzucany jest błąd krytyczny

Dowolna niezdefiniowana stała będąca niekwalifikowaną nazwą, na przykład BLA, spowoduje wyświetlenie komunikatu, że PHP założyło, że BLA była wartością stałej. Każda stała, w pełni kwalifikowana lub bezwzględna, która zawiera znak odwrotnego ukośnika spowoduje błąd krytyczny, jeśli nie zostanie znaleziony.

Przykład #10 Niezdefiniowane stałe

pasek przestrzeni nazw ;
$a = FOO ; // wyświetla ostrzeżenie: niezdefiniowane stałe "FOO" założono "FOO";
$a = \FOO ; // błąd krytyczny: niezdefiniowana stała przestrzeni nazw FOO
$a = Bar\FOO ; // błąd krytyczny: niezdefiniowana stała przestrzeni nazw bar\Bar\FOO
$a = \Bar\FOO ; // błąd krytyczny: niezdefiniowana stała przestrzeni nazw Bar\FOO
?>

Nie można zastąpić stałych specjalnych, takich jak NULL, TRUE, FALSE, ZEND_THREAD_SAFE lub ZEND_DEBUG_BUILD

Każda próba zdefiniowania stałej przestrzeni nazw, która pasuje do nazw specjalnych wbudowanych stałych, zakończy się błędem krytycznym.

Przykład #11 Niezdefiniowane stałe

pasek przestrzeni nazw ;
const NULL = 0 ; // Błąd krytyczny;
const prawda = "głupi" ; // również błąd krytyczny;
// itd.
?>

7 lat temu

Istnieje sposób na zdefiniowanie stałej w przestrzeni nazw, która jest specjalną, wbudowaną stałą, za pomocą funkcji i ustawień definicji trzeci parametr case_insensitive na false:

przestrzeń nazw foo ;
zdefiniuj (__NAMESPACE__ . "\NULL" , 10 ); // definiuje stałą NULL w bieżącej przestrzeni nazw


?>

Nie ma potrzeby określania przestrzeni nazw w wywołaniu funkcji define(), jak to zwykle bywa
przestrzeń nazw foo ;
define(INI_ALL , "bar" ); // wyświetla informację - Stała INI_ALL jest już zdefiniowana. Ale:

Zdefiniuj (__NAMESPACE__ . "\INI_ALL" , "bar" ); // definiuje stałą INI_ALL w bieżącej przestrzeni nazw
var_dump(INI_ALL); // pokaże string(3)"bar". Jak dotąd nic nieobserwowanego. Ale:

Definiuj("NULL" , 10 ); // definiuje stałą NULL w bieżącej przestrzeni nazw...
var_dump(NULL); // pokaże 10
var_dump(null); // pokaże NULL
?>

Jeśli parametr case_insensitive jest ustawiona na true
przestrzeń nazw foo ;
zdefiniuj (__NAMESPACE__ . "\NULL" , 10 , true ); // generuje powiadomienie - Stała null jest już zdefiniowana
?>

3 lata temu

podczas tworzenia klas lub wywoływania metod statycznych z przestrzeni nazw przy użyciu zmiennych należy pamiętać, że wymagają one pełnej przestrzeni nazw, aby można było użyć odpowiedniej klasy; NIE MOŻNA użyć aliasu lub krótkiej nazwy, nawet jeśli jest wywoływana w tej samej przestrzeni nazw. Zaniedbanie uwzględnienia tego może spowodować, że kod użyje niewłaściwej klasy, zgłosi krytyczny wyjątek brakującej klasy lub wygeneruje błędy lub ostrzeżenia.

W takich przypadkach możesz użyć magicznej stałej __NAMESPACE__ lub bezpośrednio określić pełną przestrzeń nazw i nazwę klasy. Funkcja class_exists również wymaga pełnej przestrzeni nazw i nazwy klasy i może służyć do zapewnienia, że ​​błąd krytyczny nie zostanie zgłoszony z powodu brakujących klas.

Przestrzeń nazw Foo ;
klasa Bar(
publiczny test funkcji statycznej()(
return pobierz_nazwaną_klasę();
}
}

przestrzeń nazw Foo \ Foo ;
klasa Bar rozszerza \ Foo \ Bar (
}

Var_dump(Bar::test()); // string(11) "Foo\Foo\Bar"

$bar = "Foo\Bar" ;
var_dump($bar::test()); // string(7) "Foo\Bar"

$bar = __NAMESPACE__ . "\Bar" ;
var_dump($bar::test()); // string(11) "Foo\Foo\Bar"

$bar = "Bar" ;
var_dump($bar::test()); // BŁĄD KRYTYCZNY: Klasa "Bar" nie znaleziono lub Nieprawidłowa klasa \Bar used

Ten post dotyczy stałych. Jak zwykle zajmijmy się samą koncepcją stałych w językach programowania i zobaczmy, jak są deklarowane i używane stałe w PHP.

Pojęcie stałej i stałych w PHP

Słowo stała powinno być Ci znane z matematyki:

„Stała matematyczna- ilość, której wartość się nie zmienia.

To samo dotyczy PHP. Stała w PHP to identyfikator, który służy do wyznaczenia prostej wartości (ciąg, jakaś liczba), której nie można zmienić podczas wykonywania kodu.

Aby zadeklarować stałą (przypisać jej wartość), użyj funkcji definiować. Przykład deklaracji stałej:

W nazwach stałych w PHP rozróżniana jest wielkość liter (wielkie i małe litery są różne), więc musisz być ostrożny. Istnieje również konwencja, że ​​nazwy stałe są zawsze pisane dużymi literami.

Nazwa stałej musi zaczynać się od litery lub znaku podkreślenia „_” i może składać się z liter, cyfr i podkreśleń.

Rozważ prosty przykład użycia stałej:

W tym przykładzie zadeklarowaliśmy stałą i użyliśmy jej w programie.

Do czego służą stałe i czy nie jest łatwiej używać zmiennych?

Jak już wspomniano, stałe nie mogą zmieniać swojej wartości podczas wykonywania programu. Stałe zwykle przechowują stałe parametry lokacji, takie jak szczegóły dostępu do bazy danych (host, nazwa użytkownika i hasło, nazwa bazy danych), lokalizacja lokacji na dysku i wiele innych ustawień.

Jeśli użyjemy zmiennych, to skrypt może przypadkowo (w przypadku błędu) zmienić wartość zmiennej i nie będzie działać zgodnie z zamierzeniami.

Używanie stałych zapewnia, że ​​wartość określona podczas deklarowania stałej pozostanie niezmieniona.