Константы и define()

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

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

Список тем

Объявление первой константы

id: 38917_task_const_1

Для создания констант в PHP часто используется функция `define()`. Она принимает два основных аргумента: имя константы и её значение. Давайте создадим константу `APP_NAME` со значением 'Мой Блог'. Заполните пропущенные части.

Заполните пропуски
<?php

// Объявляем константу с названием приложения
input1S(input2S, 'Мой Блог');

echo APP_NAME;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Правильное использование константы

id: 38917_task_const_2

В отличие от переменных, при обращении к константам знак доллара `$` не используется. В коде допущена именно такая ошибка. Найдите ее и исправьте, чтобы скрипт вывел правильное приветствие.

Найдите ошибку и исправьте
<?php
define('ADMIN_NAME', 'Алексей');
 
echo "Добро пожаловать, " . $ADMIN_NAME;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Регистр имеет значение

id: 38917_task_const_3

По умолчанию имена констант чувствительны к регистру. Это значит, что `MY_CONST` и `my_const` — это две разные вещи. Что выведет следующий код, если попытаться обратиться к константе в нижнем регистре?

Выберите правильный вариант ответа
<?php
// error_reporting(0); // Представим, что предупреждения отключены на сервере

define('STATUS', 'OK');
echo status;
Сообщения
Проверить
Показать подсказку

Альтернативный способ: const

id: 38917_task_const_4

Кроме `define()`, для создания констант можно использовать ключевое слово `const`. Этот способ работает немного быстрее, так как константа определяется на этапе компиляции. Объявите константу `MAX_FILE_SIZE` со значением `5000000` с помощью `const`.

Заполните пропуски
<?php

// Максимальный размер файла для загрузки в байтах
input1S MAX_FILE_SIZE = input2S;

if (MAX_FILE_SIZE > 4000000) {
    echo "Лимит размера файла превышает 4МБ";
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

const против define()

id: 38917_task_const_5

Хотя `const` и `define()` делают одно и то же — создают константы, — у них есть важные различия, которые влияют на их использование. Сопоставьте каждую конструкцию с ее ключевой характеристикой.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Ключевое слово `const`
Функция `define()`
Оба способа
Можно объявлять внутри условных блоков (например, `if`).
Нельзя объявлять внутри условных блоков.
Создают значение, которое нельзя изменить.
Сообщения
Проверить
Показать подсказку

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

id: 38917_task_const_6

Одно из главных правил — константу нельзя переопределить. Если попытаться сделать это с помощью `define()`, PHP проигнорирует повторное объявление и выдаст предупреждение. Что выведет этот код в итоге?

Что должно получиться?
<?php
// error_reporting(E_ALL & ~E_WARNING); // Скроем предупреждение для чистоты

define('VERSION', '1.0');
define('VERSION', '2.0'); // Эта строка будет проигнорирована

echo VERSION;
Сообщения
Проверить
Показать подсказку

Сборка условного объявления

id: 38917_task_const_7

Используя `define()`, можно объявлять константы в зависимости от условий. Соберите из банка токенов код, который проверяет, определена ли константа `DEBUG_MODE`. Если нет, то он ее определяет со значением `false`.

Нужно правильно расставить в пропуски предложенные варианты
<?php

if ( ! input1S('DEBUG_MODE') ) {
    input2S('DEBUG_MODE', input3S);
}

var_dump(DEBUG_MODE);
defined
true
define
false
isset
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Допустимые и недопустимые имена

id: 38917_task_const_8

Как и у переменных, у констант есть правила именования. Не все символы и последовательности разрешены. Распределите предложенные имена по двум категориям: "Допустимые имена" и "Недопустимые имена".

Перетяните элементы в соответствующие блоки
Допустимые имена
Недопустимые имена
MAX_CONNECTIONS
2_FACTOR_AUTH
_PRIVATE_KEY
DB-HOST
MY_CONSTANT
$USER_ROLE
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру