Константы в PHP — это как переменные, но с одним важным отличием: их значение нельзя изменить после объявления. Это делает их идеальными для хранения данных, которые должны оставаться постоянными на протяжении всей работы скрипта, например, настроек подключения к базе данных, ключей API или математических констант вроде числа Пи. В этом уроке мы разберем два способа создания констант: с помощью функции define() и ключевого слова const. Вы научитесь их объявлять, правильно использовать и поймете ключевые различия между этими двумя подходами.
- Модуль 1: Основы синтаксиса PHP
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Модуль 4: Условные конструкции
- Модуль 5: Циклы
- Модуль 6: Массивы
- Индексированные массивы.
- Ассоциативные массивы.
- Многомерные массивы.
- Добавление элементов в массив.
- Удаление элементов из массива.
- Функция count().
- Функция array_push() и array_pop().
- Функция array_shift() и array_unshift().
- Функция array_merge().
- Функция array_slice().
- Функция array_splice().
- Функция in_array().
- Функция array_search().
- Функция array_keys() и array_values().
- Функция array_unique().
- Функция array_reverse().
- Сортировка: sort(), rsort().
- Сортировка: asort(), arsort().
- Сортировка: ksort(), krsort().
- Функция array_map().
- Функция array_filter().
- Функция array_reduce().
- Функция array_walk().
- Функция array_column().
- Деструктуризация массивов.
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 20: Работа с базами данных MySQLi
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 26: Генераторы и итераторы
- Модуль 27: Reflection API
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
Объявление первой константы
Для создания констант в PHP часто используется функция `define()`. Она принимает два основных аргумента: имя константы и её значение. Давайте создадим константу `APP_NAME` со значением 'Мой Блог'. Заполните пропущенные части.
<?php
// Объявляем константу с названием приложения
input1S(input2S, 'Мой Блог');
echo APP_NAME;Правильное использование константы
В отличие от переменных, при обращении к константам знак доллара `$` не используется. В коде допущена именно такая ошибка. Найдите ее и исправьте, чтобы скрипт вывел правильное приветствие.
<?phpdefine('ADMIN_NAME', 'Алексей'); echo "Добро пожаловать, " . $ADMIN_NAME;Регистр имеет значение
По умолчанию имена констант чувствительны к регистру. Это значит, что `MY_CONST` и `my_const` — это две разные вещи. Что выведет следующий код, если попытаться обратиться к константе в нижнем регистре?
<?php
// error_reporting(0); // Представим, что предупреждения отключены на сервере
define('STATUS', 'OK');
echo status;Альтернативный способ: const
Кроме `define()`, для создания констант можно использовать ключевое слово `const`. Этот способ работает немного быстрее, так как константа определяется на этапе компиляции. Объявите константу `MAX_FILE_SIZE` со значением `5000000` с помощью `const`.
<?php
// Максимальный размер файла для загрузки в байтах
input1S MAX_FILE_SIZE = input2S;
if (MAX_FILE_SIZE > 4000000) {
echo "Лимит размера файла превышает 4МБ";
}const против define()
Хотя `const` и `define()` делают одно и то же — создают константы, — у них есть важные различия, которые влияют на их использование. Сопоставьте каждую конструкцию с ее ключевой характеристикой.
Попытка переопределения
Одно из главных правил — константу нельзя переопределить. Если попытаться сделать это с помощью `define()`, PHP проигнорирует повторное объявление и выдаст предупреждение. Что выведет этот код в итоге?
<?php
// error_reporting(E_ALL & ~E_WARNING); // Скроем предупреждение для чистоты
define('VERSION', '1.0');
define('VERSION', '2.0'); // Эта строка будет проигнорирована
echo VERSION;Сборка условного объявления
Используя `define()`, можно объявлять константы в зависимости от условий. Соберите из банка токенов код, который проверяет, определена ли константа `DEBUG_MODE`. Если нет, то он ее определяет со значением `false`.
<?php
if ( ! input1S('DEBUG_MODE') ) {
input2S('DEBUG_MODE', input3S);
}
var_dump(DEBUG_MODE);Допустимые и недопустимые имена
Как и у переменных, у констант есть правила именования. Не все символы и последовательности разрешены. Распределите предложенные имена по двум категориям: "Допустимые имена" и "Недопустимые имена".