Defined: примеры (PHP)

Использование функции defined для проверки констант PHP
Раздел: Работа с константами
defined(string $constant_name): bool

Основы функции defined

Функция defined в PHP используется для проверки существования указанной константы. Она возвращает true, если константа объявлена, и false в противном случае.

Назначение функции

Основное применение функции - проверка определенности констант перед их использованием, что позволяет избежать ошибок выполнения при обращении к несуществующим константам. Это особенно важно при работе с константами, которые могут быть определены в различных конфигурациях или внешних библиотеках.

Синтаксис и аргументы

Функция принимает один обязательный параметр:

bool defined(string $constant_name)

Параметр $constant_name представляет строковое имя проверяемой константы. Имя указывается без символа $ и чувствительно к регистру.

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

Базовая проверка константы

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

define('SITE_NAME', 'MyWebsite');
echo defined('SITE_NAME') ? 'Константа существует' : 'Константа не существует';
Константа существует
Проверка предопределенной константы
echo defined('PHP_VERSION') ? 'Версия PHP: ' . PHP_VERSION : 'Константа не определена';
Версия PHP: 8.x.x
Проверка несуществующей константы
var_dump(defined('UNDEFINED_CONSTANT'));
bool(false)

Похожие функции в PHP

function_exists

Проверяет существование функции. В отличие от defined, работает с функциями, а не константами.

var_dump(function_exists('array_filter'));
bool(true)
class_exists

Определяет, был ли объявлен класс. Используется для проверки доступности классов перед их инстанцированием.

var_dump(class_exists('DateTime'));
bool(true)
isset для переменных

Для проверки инициализации переменных используется isset, а не defined. Константы проверяются через defined, переменные - через isset.

$variable = 'test';
echo isset($variable) ? 'Переменная существует' : 'Переменная не существует';
Переменная существует

Аналоги в других языках

Defined в Python

В Python нет прямого аналога. Проверка осуществляется через обработку исключений или проверку глобального пространства имен.

try:
    print(SOME_CONSTANT)
except NameError:
    print('Константа не определена')
Константа не определена

Defined в Javascript

В JavaScript проверка существования идентификатора зависит от контекста. Для глобальных переменных можно использовать оператор in.

if ('undefined' !== typeof MY_CONSTANT) {
    console.log('Константа существует');
} else {
    console.log('Константа не существует');
}

Defined в MySQL

В MySQL пользовательские переменные проверяются через IS NOT NULL, но это отличается от проверки констант в PHP.

SET @my_var = 'value';
SELECT IF(@my_var IS NOT NULL, 'Определена', 'Не определена') AS status;

Распространенные ошибки

Проверка переменных вместо констант

Ошибка при проверке переменной как константы:

$variable = 'test';
echo defined($variable);
bool(false)
Неправильный формат имени

Использование символа $ в имени константы:

define('MY_CONST', 100);
echo defined('$MY_CONST');
bool(false)
Чувствительность к регистру

Константы по умолчанию чувствительны к регистру:

define('APP_DEBUG', true);
echo defined('app_debug');
bool(false)

Изменения в версиях PHP

Функция defined оставалась стабильной в последних версиях PHP. В PHP 8.0 не было внесено изменений в поведение или синтаксис функции. Основные принципы работы сохранены для обратной совместимости.

Исторические изменения

В ранних версиях PHP функция могла вести себя иначе с регистронезависимыми константами, но в современных версиях поведение унифицировано.

Расширенные примеры применения

Динамическая проверка констант

Проверка констант с динамически формируемыми именами:

Пример php
$config_constants = ['DB_HOST', 'DB_USER', 'DB_PASS'];
foreach ($config_constants as $const) {
    if (!defined($const)) {
        echo "Константа $const не определена\n";
    }
}
Использование в условных определениях

Определение константы только если она не существует:

Пример php
if (!defined('DEBUG_MODE')) {
    define('DEBUG_MODE', false);
}
echo 'Режим отладки: ' . (DEBUG_MODE ? 'включен' : 'выключен');
Режим отладки: выключен
Проверка констант классов

Работа с константами внутри классов:

Пример php
class Config {
    const VERSION = '1.0';
}

echo defined('Config::VERSION') ? 'Константа класса определена' : 'Не определена';
Константа класса определена
Массовая проверка конфигурации

Пример проверки всех необходимых констант конфигурации:

Пример php
$required_constants = ['API_KEY', 'API_SECRET', 'API_ENDPOINT'];
$missing = [];

foreach ($required_constants as $constant) {
    if (!defined($constant)) {
        $missing[] = $constant;
    }
}

if (!empty($missing)) {
    echo 'Не определены константы: ' . implode(', ', $missing);
}

PHP defined function comments

En
Defined Checks whether a given named constant exists