Привет. Сегодня решил написать о константах в PHP. Расскажу как константы работают, какие чаще всего применяются и бывают.

Что такое константы в контексте PHP?

Константы — это по сути переменные у которых нельзя переопределить значение. Т.е после указания их значения вы больше не сможете его менять по ходу выполнения скрипта. Они как правило пишутся в верхнем регистре и в названии конкретно отражают хранимую в них информацию.

В PHP существует 2 разновидности констант:

  1. Обычные (задаются программистом)
  2. Предопределенные (задаются интерпретатором)

Обычные константы

Такой тип констант обычно используются как правило для служебных целей и создаются программистом в процессе написание кода.
Синтаксис создания обычной константы:

Define("PI",3.1415);

Создание константы происходит с помощью встроенной конструкции define ("Имя константы","Значение константы").

Для краткого пояснения механизма работы с константами покажу пример того что значения в константах задается один раз, и более не может быть изменено:

Для того чтобы проверить существование константы в языке предусмотрена функция defined («CONST_NAME»).

Предопределенные константы

Предопределенные константы отличаются от обычных способом создания. Они устанавливаются самим интерпретатором и меняют свое значение в контексте выполнения программы. Так же они не чувствительны к регистру, __CLASS__ или __class__ будут прекрасно выполнены интерпретатором.

Вот самые часто используемые предопределенные константы:

  • __FILE__ — хранит имя выполняемого на данный момент скрипта.
  • __FUNCTUIN__ — имя текущей функции.
  • __CLASS__ — имя текущего класса.
  • PHP_VERSION — содержит версию интерпретатора PHP.
  • TRUE , FALSE , NULL — содержат в себе значения соответствующие своему названию.

Для примера работы таких констант посмотрим на использование одной из них — __FUNCTION__ :

Как можно видеть из примера константа __function__ вернула имя функции в которой она была первоначально вызвана — abc () .

И да, константу невозможно удалить как обычную переменную функцией unset () , она существует от начала и до конца выполнения программы.

На этом все, желаю успешной практики и хорошего настроения. До скорого.

сайт Права на контент защищены.

Константы - это идентификаторы (имена) простых значений. Исходя из их названия, нетрудно понять, что их значение не может изменяться в ходе выполнения скрипта (исключения представляют "волшебные" константы , которые на самом деле не являются константами в полном смысле этого слова). Имена констант чувствительны к регистру. По принятому соглашению, имена констант всегда пишутся в верхнем регистре.

Имя константы должно соответствовать тем же правилам, что и другие имена в PHP. Правильное имя начинается с буквы или символа подчеркивания и состоит из букв, цифр и подчеркиваний. Регулярное выражение для проверки правильности имени константы выглядит так: *

Замечание : Понятие "буквы" здесь - это символы a-z, A-Z, и другие символы с ASCII-кодами от 127 до 255 (0x7f-0xff).

Синтаксис

Вы можете определить константу с помощью функции define() или с помощью ключевого слова const вне объявления класса начиная с версии PHP 5.3.0. После того, как константа определена, ее значение не может быть изменено или аннулировано.

Константы могут содержать только скалярные данные (boolean , integer , float и string типов). Возможно также определять константы типа , но этого следует избегать, так как это может привести к неожиданным результатам.

Получить значение константы можно, указав ее имя. В отличие от переменных, вам не нужно предварять имя константы символом $ . Также вы можете использовать функцию constant() для получения значения константы, если вы формируете имя константы динамически. Используйте функцию get_defined_constants() для получения списка всех объявленных констант.

Замечание : Константы и (глобальные) переменные находятся в разных пространствах имен. Это означает, что, например, TRUE и $TRUE являются совершенно разными вещами.

Если вы используете неопределенную константу, PHP предполагает, что вы имеете ввиду само имя константы, как если бы вы указали литерал типа string (CONSTANT вместо "CONSTANT"). При этом будет сгенерирована ошибка уровня E_NOTICE . Смотрите также главу руководства, которая разъясняет, почему $foo - это неправильно (конечно, если вы перед этим не объявили bar как константу с помощью define()). Если вы просто хотите проверить, определена ли константа, используйте функцию defined() .

Различия между константами и переменными:

  • У констант нет приставки в виде знака доллара ($ );
  • Константы можно определить только с помощью функции define() , а не присваиванием значения;
  • Константы могут быть определены и доступны в любом месте без учета области видимости;
  • Константы не могут быть переопределены или аннулированы после первоначального объявления; и
  • Константы могут иметь только скалярные значения.

"Волшебные" константы

PHP предоставляет большой список предопределенных констант для каждого выполняемого скрипта. Многие из этих констант определяются различными модулями и будут присутствовать только в том случае, если эти модули доступны в результате динамической загрузки или в результате статической сборки.

Есть семь волшебных констант, которые меняют свое значение в зависимости от контекста, в котором они используются. Например, значение __LINE__ зависит от строки в скрипте, на которой эта константа указана. Специальные константы нечувствительны к регистру и их список приведен ниже:

Некоторые "волшебные" константы PHP
Имя Описание
__LINE__ Текущий номер строки в файле.
__FILE__ Полный путь и имя текущего файла. Если используется внутри подключаемого файла, то возвращается имя данного файла. Начиная с версии PHP 4.0.2, __FILE__ всегда содержит абсолютный путь с разрешенными символическими ссылками, тогда как в старых версиях в некоторых обстоятельствах возвращался относительный путь.
__DIR__ Директория файла. Если используется внутри подключаемого файла, то возвращается директория этого файла. Это эквивалентно вызову dirname(__FILE__) . Возвращаемое имя директории не оканчивается на слэш, за исключением корневой директории (добавлена в PHP 5.3.0.)
__FUNCTION__ Имя функции. (Добавлена в PHP 4.3.0.) Начиная с PHP 5 эта константа возвращает имя функции точно так, как оно было объявлено (с учетом регистра). В PHP 4 это значение всегда было в нижнем регистре.
__CLASS__ Имя класса. (Добавлена в PHP 4.3.0) Начиная с PHP 5 эта константа возвращает имя класса точно так, как оно было объявлено (с учетом регистра). В PHP 4 это значение всегда было в нижнем регистре. Имя класса содержит название пространства имен, в котором класс был объявлен (например, Foo\Bar ). Обратите внимание, что начиная с PHP5.4 __CLASS__ также работает в трейтах. При использовании в методах трейтов __CLASS__ является именем класса, в котором эти методы используется.
__TRAIT__ Имя трейта. (Добавлена в PHP 5.4.0) Начиная с PHP 5.4 эта константа возвращает имя трейта точно так, как оно было объявлено (с учетом регистра). Это имя содержит название пространства имен, в котором трейт был объявлен (например, Foo\Bar ).
__METHOD__ Имя метода класса. (Добавлена в PHP 5.0.0) Имя метода возвращается так, как оно было объявлено (с учетом регистра).
__NAMESPACE__ Имя текущего пространства имен (с учетом регистра). Эта константа определяется во время компиляции (Добавлена в версии PHP 5.3.0).
Пример #1 Правильные и неправильные имена констант
// Правильные имена констант define("FOO", "something"); define("FOO2", "something else"); define("FOO_BAR", "something more"); // Неправильные имена констант define("2FOO", "something"); // Это корректное объявление, но лучше его не использовать: // PHP однажды может зарегистрировать "волшебную" константу, // которая сломает ваш скрипт define("__FOO__", "something");

» Константы в PHP?

Навигация по Самоучителю: 1.1 О PHP 1.2 История PHP 1.3 Почему именно PHP? 1.4 Как это все (PHP) работает? 1.5 От интерпретатора к компилятору 1.6 Возможности PHP 1.7 Что необходимо для работы? 1.8 Ответы на ваши вопросы 1.9 Заключение к главе 2.1 Установка и конфигурирование 2.2 Установка Apache 2.3 Установка PHP 2.4 Установка MySQL 2.5 Настройка Apache 2.6 Настройка PHP 2.7 Настройка MySQL 2.8 Тестирование программ Apache, PHP 2.9 Заключение к главе 2 3.1 Синтаксис языка PHP 3.2 Профессиональная вставка 3.3 РНР и HTML 3.4 Комментарии в языке (коде) PHP 3.5 Оформление PHP кода программы 3.6 Заключение к главе 3 4.1 Переменные. Что такое переменные? 4.2 Переменные. Типы данных в PHP 4.3 Integer. Тип данных. 4.4 Double. Тип данных. 4.5 Boolean. Тип данных. 4.6 Другие типы данных 4.7 Определение переменных в PHP 4.8 Изменение типа данных в PHP 4.9 Ссылки на переменные в PHP 4.10 Динамические переменные в PHP 4.11 Что такое Константы в PHP? 4.12 Определение констант в языке PHP 4.13 Предопределенные константы в языке PHP 4.14 Заключение к главе 4 5.1 Операторы в PHP 5.2 Оператор присваивания в PHP 5.3 Арифметические операторы в PHP 5.4 Операторы отношения в PHP 5.5 Логические операторы в PHP 5.6 Поразрядные операторы в PHP 5.7 Строковые операторы в PHP 5.8 Оператор подавления ошибок в PHP 5.9 Операторы увеличения и уменьшения в PHP 5.10 Сокращенная запись присвоения переменных в PHP 5.11 Приоритетность и ассоциативность в PHP 5.12 Заключение к главе 5 6.1 Управляющие операторы PHP 6.2 Условный оператор IF 6.3 Условный оператор Elseif 6.4 Условный оператор Switch 6.5 Операторы цикла For 6.6 Оператор цикла While 6.7 Оператор цикла Do...while 6.8 Безусловный оператор Break 6.9 Безусловный оператор Continue 6.10 Безусловный оператор Exit 6.11 Require 6.12 Include 6.13 Заключение к главе 6 7.1 Функции в PHP 7.2 Определение функций в PHP 7.3 Аргументы функций в PHP 7.4 Область видимости переменных 7.5 Время жизни переменных в PHP 7.6 Рекурсия в PHP 7.7 Динамический вызов функций в PHP 7.8 Заключение к главе 7 8.1 Массивы в PHP 8.2 Присвоение значений массивов PHP 8.3 Функция array () PHP 8.4 Вывод PHP массивов 8.5 Обход массивов PHP. Функция count(), Конструкции foreach() 8.6 Функция reset() 8.7 each() 8.8 list() 8.9 Сложение массивов 8.10 Сравнение массивов 8.11 Добавление элементов массива 8.12 Удаление элементов массива 8.13 Сортировка массивов 8.14 Многомерные массивы 8.15 Преобразование в массив 8.16 Заключение к главе 8 9.1 Строка 9.2 Обработка переменных внутри строк 9.3 Вывод строк 9.4 Форматированный вывод строк 9.5 Длина строки в PHP 9.6 Поиск подстроки в строке 9.7 Чистка строк 9.8 Заключение к главе 9 10.1 Работа с HTML-формами 10.2 Передача данных HTML-формы. Метод GET и POST 10.3 Получение данных в PHP 10.4 Суперглобальные массивы $_GЕТ и $_POST 10.5 Заключение к главе 10 11.1 Открытие файлов в PHP 11.2 Закрытие файлов в PHP 11.3 Чтение и запись файлов в PHP 11.4 Копирование, удаление и переименование файлов в PHP 11.5 Получение информации о файлах в PHP 11.6 Файловый указатель в PHP 11.7 Открытие и закрытие каталогов в PHP 11.8 Чтение каталогов в PHP 11.9 Создание и удаление каталогов в PHP 11.10 Заключение к главе 11 12.1 Работа с базами данных MySQL в PHP 12.2 Соединение PHP с сервером базы данных MySQL 12.3 Создание и удаление базы данных MySQL 12.4 Создание и удаление таблиц MySQL 12.5 Работа с данными MySQL 12.6 Заключение к главе 12 13.1 Работа с изображениями в PHP. Библиотека GD 13.2 Создание и вывод изображений в PHP 13.3 Модификация изображений в PHP 13.4 Работа с текстом в PHP 13.5 Заключение к главе 13 14.1 Работа с датой и временем в PHP 14.2 Символы форматирования даты и времени в PHP 14.3 Функция date() и getdate() в PHP 14.4 Преобразования к абсолютному времени в PHP 14.5 Заключение к главе 14 15.1 Работа с регулярными выражениями в PHP 15.2 Регулярные выражения POSIX в PHP 15.3 Метасимволы в PHP 15.4 Классы символов 15.5 Квантификаторы 15.6 Замена по шаблону 15.7 Примеры регулярных выражений 15.8 Заключение к главе 15 16.1 Работа с Cookies в PHP 16.2 Создание Cookies в PHP 16.3 Чтение из Cookies 16.4 Удаление Cookies 16.5 Заключение к главе 16

Употребляя в повседневной жизни слово «константа», мы имеем в виду постоянное значение. Это может быть число Пи (3,14) или температура кипения воды (100 °С). В РНР тоже имеется возможность использовать константы. Смысл их применения заключается в том, что обозначив определенное значение, мы можем использовать его на протяжении всего кода программы.

(!) Константа - это неизменяемое значение.

Например, ваш друг Василий Пупкин создал Web-сайт и хочет, чтобы все знали имя администратора. При этом он находит самое простое и, на первый взгляд, верное решение (листинг 4.19).

Листинг 4.19. Вывод фамилии и имени администратора Web-сайта.

‹?php
echo "Администратор сайта: Пупкин Василий"; // вывод сообщения
?›

Соответственно, надо изменить имя администратора. Скорее всего, вы станете искать по всем страницам сайта текст, содержащий строчку Пупкин Василий. После нахождения надо разобраться, менять ли ее на ваше имя или нет. Не трудно заметить, что решение, на первый взгляд, простой задачи занимает много времени и не гарантирует корректную работу программы. Все эти проблемы можно было бы избежать, если бы Василий применил константу для обозначения своего имени. Для этого надо выбрать имя константы (обычно его называют идентификатором), например ADMIN_NAME, после чего определить ее значение (в нашем случае Пупкин Василий).

Теперь решение задачи будет выглядеть так, как показано в листинге 4.20.

Листинг 4.20. Пример использования констант.

‹html›
‹head›
‹title›Пример использования констант‹/title›
‹/head›
‹body›
‹?php
define("ADMIN_NAME", "Пупкин Василий"); // определение константы
echo "Администратор сайта: "; // вывод сообщения
echo ADMIN_NAME; // вывод значения константы
?›
‹/body›
‹/html›

В этом случае идентификатор ADMIN_NAME будет заменен значением Пупкин Василий. Для того чтобы изменить имя администратора Web-сайта, потребуется только корректировка строчки с определением константы. Рассмотрим эту тему более подробно.

В этой заметке речь пойдет о константах. Как обычно разберемся с самим понятием константы в языках программирования и посмотрим, как объявляются и используются константы в PHP .

Понятие константа и константы в PHP

Слово константа должно быть вам уже знакомо из математики:

“Математическая константа - величина, значение которой не меняется.”

Тоже самое и в PHP. Константа в PHP – это идентификатор, который служит для обозначения простого значения (строка, число какое-нибудь), которое не может изменяться в процессе выполнения кода.

Для объявления константы (присвоения ей значения) используется функция define . Пример объявления константы:

Имена констант в PHP чувствительны к регистру (большие и маленькие буквы различаются), так что нужно быть внимательней. Также существует соглашение, что имена констант всегда пишутся в верхнем регистре.

Имя константы должно начинаться с буквы или символа подчеркивания “_” и может состоять из букв, цифр и подчеркивания.

Рассмотрим простой пример использования константы:

В этом примере мы объявили константу и использовали ее в программе.

Для чего используются константы и не проще ли использовать переменные?

Как уже было сказано, константы не могут изменить своего значения в процессе выполнения программы. В константах обычно сохраняют постоянные параметры сайта, такие как реквизиты доступа к базе данных (хост, логин и пароль пользователя, имя базы данных), расположение сайта на диске и многие другие настройки.

Если мы будем использовать переменные, то скрип может случайно (в случаем ошибки) изменить значение переменной и будет работать не так как вы задумали.

Использование констант гарантирует, что то значение которое вы указали при объявлении константы останется неизменным.

Последнее обновление: 1.11.2015

Константы, как и переменные хранят определенное значение, только в отличие от переменных значение констант может быть установлено только один раз, и далее мы уже не можем его изменить. Например, определим числовую константу:

Для определения константы используется оператор define , который имеет следующую форму: define(string $name, string $value, bool $case_sen=false) . Параметр $name передает название константы, а параметр $value - ее значение. Третий необязательный параметр принимает логическое значение true или false . Если значение равно false, то при использовании константы будет учитываться ее регистр, если true - регистр не учитывается. В нашем случае третий параметр не использован, поэтому он по умолчанию равен false.

После определения константы мы можем ее использовать также, как и обычную переменную. Единственное исключение - мы не сможем изменить ее значение. Другое отличие от переменной - не надо использовать знак $ . То есть выражение NUMBER=33; работать не будет.

Предопределенные константы

Кроме создаваемых программистом констант в PHP имеется еще несколько встроенных констант:

    FILE__ : хранит полный путь и имя текущего файла

    LINE__ : хранит текущий номер строки, которую обрабатывает интерпретатор

    DIR__ : хранит каталог текущего файла

    FUNCTION__ : название обрабатываемой функции

    CLASS__ : название текущего класса

    METHOD__ : название обрабатываемого метода

    NAMESPACE__ : название текущего пространства имен

Например, выведем текущую выполняемую строку и название файла:

Проверка существования константы

Чтобы проверить, определена ли константы, мы можем использовать функцию bool defined(string $name) . Если константа $name определена, то функция будет возвращать значение true


Close