Где объявлять константы в PHP?

«Где объявлять константы в PHP?» — вопрос из категории PHP Core, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В PHP константы объявляются в разных контекстах в зависимости от их назначения и области видимости.

  1. Глобальные константы: Объявляются с помощью define() или ключевого слова const вне класса. define() работает во время выполнения, const — на этапе компиляции.

    // config/constants.php
    define('APP_ENV', 'production'); // Можно объявить в условии if
    const APP_NAME = 'MyApplication'; // Должна быть объявлена в глобальной области видимости
    const MAX_LOGIN_ATTEMPTS = 5;
  2. Константы класса: Объявляются внутри класса с помощью const. Они относятся к классу, а не к его экземплярам (объектам).

    class DatabaseConfig {
        const DRIVER = 'mysql';
        const HOST = '127.0.0.1';
        const PORT = 3306;
    
        public static function getDsn(): string {
            return sprintf(
                '%s:host=%s;port=%d',
                self::DRIVER,
                self::HOST,
                self::PORT
            );
        }
    }
    // Обращение: DatabaseConfig::HOST
  3. Константы интерфейса: Аналогично классам, используются для определения контрактов.

    interface HttpStatus {
        const OK = 200;
        const NOT_FOUND = 404;
        const INTERNAL_ERROR = 500;
    }

Лучшие практики:

  • Используйте классовые константы для значений, логически связанных с определенным классом (настройки, коды состояний).
  • Глобальные константы (define) удобны для конфигурации среды, которая может определяться динамически.
  • Имена констант принято писать в UPPER_SNAKE_CASE.
  • Начиная с PHP 7.1, константы класса могут иметь модификатор видимости (public, private, protected).