Глава 13. Константи

Съдържание
Синтаксис
Вълшебни константи

Константата е индентификатор (име) за проста стойност. Както подсказва и името, тази стойност не може да се променя по време на изпълнение на скрипта (с изключение на вълшебните константи, които всъщност не са константи). Константата е чувствителна към регистъра (case-sensitive) по подразбиране. Неписано правило е константните индентификатори да се пишат винаги с главни букви.

Името на константата се подчинява на същите правила, както и всеки етикет в PHP. Валидните имена на константи започват с буква или подчертавка, последвани от коя да е цифра, буква или подчертавка. Като регулярен израз, това може да бъде представено така: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

Поздсказка: Може да погледнете също така .

Пример 13-1. Валидни и невалидни имена на константи

<?php

// Валидни имена на константи
define("FOO",     "нещо");
define("FOO2",    "нещо друго");
define("FOO_BAR", "нещо в повече");

// Невалидни имена на константи
define("2FOO",    "нещо");

// Това е валидно, но трябва да се избягва:
// Възможно е някой ден PHP да предостави вълшебна константа,
// която ще счупи скрипта ви
define("__FOO__", "нещо"); 

?>

Забележка: В случая, под буква се разбират a-z, A-Z, и ASCII знаците от 127 до 255 (0x7f-0xff).

Както и за superglobals, обхватът на константата е глобален. Можете да достъпвате константи където и да е във вашия скрипт без оглед на контекста. За повече информация относно обхват и контекст, прочетете раздел Обхват на променливи.

Синтаксис

Можете да дефинирате константа посредством функцията define(). Веднъж дефинирана, константата никога повече не може да бъде променяна или отменяна.

В константи могат да се съхраняват единствено скаларни данни (boolean, integer, float и string). Не дефинирайте константи от тип resource.

Можете да вземете стойността на константа, просто като укажете името й. За разлика от променливите, пред константа не трябва да слагате $. Можете също да използвате функцията constant(), за да получите стойността на константа, в случай, че желаете да получите името на константата динамично. За списък с всички дефинирани константи, използвайтеget_defined_constants().

Забележка: Константите и (глобалните) променливи са в различни пространства от имена (namespaces). Това означава, че TRUE и $TRUE обикновено са различни.

Ако използвате недефинирана константа, PHP приема, че имате предвид името на самата константа, също както ако сте я извикали като string (CONSTANT и "CONSTANT"). Когато това се случи, ще бъде изкарана грешка от ниво E_NOTICE. Вижте също раздела, в който се повдига въпросът защо $foo[bar] е погрешно (освен ако преди това не сте дефинирали с define() bar като константа). Ако просто искате да проверите дали дадена константа е дефинирана, използвайте функцията defined().

Това са разликите между константи и променливи:

Пример 13-2. Дефиниране на константи

<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // outputs "Constant" and issues a notice.
?>

Вж. също Класови константи.