Just a quick note:
From PHP7 on you can even define a multidimensional Array as Constant:
define('QUARTLIST',array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul'));
does work as expected.
Możesz zdefiniować stałą, używając funkcji define() lub słowa kluczowego const poza klasą, od PHP 5.3.0. Podczas gdy define() pozwala zdefiniować wyrażenie będące stałą, słowo kluczowe const ma ograniczenia wymienione w następnym akapicie. Raz zdefiniowana stała nie może zostać zmieniona ani usunięta.
Do wersji PHP 5.6 stałe zadeklarowane przy użyciu const mogą zawierać jedynie dane skalarne (boolean, integer, float oraz string). Począwszy od PHP 5.6 jest możliwe zdefiniowanie stałej jako wyrażenie skalarne, jest także możliwe zdefiniowanie stałej typu array. Można także zdefiniować stałą typu resource, ale powinno się tego unikać, bo może spowodować nieoczekiwane rezultaty.
Wartość stałej otrzymujemy, używając jej nazwy. W przeciwieństwie do zmiennych, nazw stałych nie poprzedzamy znakiem $. Możesz także użyć funkcji constant() do odczytania wartości stałej, jeśli chcesz wygenerować jej nazwę dynamicznie. Aby uzyskać listę wszystkich zdefiniowanych stałych, użyj get_defined_constants().
Informacja: Stałe i zmienne globalne operują w różnych przestrzeniach nazw. Oznacza to, że na przykład
TRUE
i $TRUE oznaczają co innego.
Jeśli używasz niezdefiniowanej stałej, PHP traktuje to, jak gdybyś chciał
użyć nazwy stałej jako wartości typu string (STAŁA a "STAŁA").
Ten mechanizm jest uznany za przestarzały od PHP 7.2.0, a dla takiego kodu
zostanie wyemitowany błąd E_WARNING
(wcześniej był to błąd poziomu
E_NOTICE)
Przeczytaj także, dlaczego
$foo[bar] jest
niepoprawne (jeśli nie zdefiniujesz
bar jako stałej). Nie odnosi się to do (w pełni) wykwalifikowanych stałych,
które spowodują błąd krytyczny, jeśli nie będą zdefiniowane. Jeśli chcesz sprawdzić
czy dana stała istnieje, użyj funkcji defined().
Oto różnice pomiędzy stałymi i zmiennymi:
Przykład #1 Definiowanie stałych
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // wypisuje "Hello world."
echo Constant; // wypisuje "Constant" i wywoułuje ostrzeżenie.
?>
Przykład #2 Definiowanie stałych używając const
<?php
// Działa od PHP 5.3.0
const CONSTANT = 'Hello World';
echo CONSTANT;
// Działa od PHP 5.6.0
const ANOTHER_CONST = CONSTANT.'; Goodbye World';
echo ANOTHER_CONST;
const ZWIERZETA = array('pies', 'kot', 'krowa');
echo ZWIERZETA[1]; // wyświetla "kot"
// Działa od PHP 7
define('ZWIERZETA', array(
'pies',
'kot',
'krowa'
));
echo ZWIERZETA[1]; // wyświetla "cat"
?>
Informacja:
W przeciwieństwie do definiowana stałych przy pomocy define(), stałe zdefiniowane przy użyciu słowa const muszą zostać zadeklarowane w zasięgu górnego poziomu, ponieważ są one definiowane w czasie kompilacji. Oznacza to, że nie mogą zostać one zadeklarowane wewnątrz funkcji, pętli, wyrażeń if lub bloków try/ catch.
Informacja:
Stałe zdefiniowane przez słoo kluczowe const są zawsze nieczułe na wielkość znaków, podczas gdy zdefiniowane przez define mogą zwracać na nią uwagę.
Zobacz także Stałe Klas.
Just a quick note:
From PHP7 on you can even define a multidimensional Array as Constant:
define('QUARTLIST',array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul'));
does work as expected.
Constants of constant :
<?php
const foo = hello;
const bar = foo;
const bd = bar;
echo "bd = " .bd; // Prints out: Hello
?>
const ArrayFromTextfile = file("mytextfile.txt", FILE_IGNORE_NEW_LINES);
does not work, it throws an error:
Fatal error: Constant expression contains invalid operations in php shell code on line …
Instead use:
define ("ArrayFromTextfile", file("mytextfile.txt", FILE_IGNORE_NEW_LINES));
print_r(ArrayFromTextfile);
Result:
Array
(
[0] ⇨ Line 1
[1] ⇨ Line 2
[2] ⇨ Line 3
[3] => …
)
With PHP 5.6, multi-dimensional arrays are also possible if you use "const" instead of "define". So,
define('QUARTLIST',array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul')));
won't work with PHP 5.6, but
const QUARTLIST=array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul'));
will.