Конфигурация

Обзор

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

Понимание

Вы можете настроить определенные поведения Flight, задавая значения конфигурации через метод set.

Flight::set('flight.log_errors', true);

В файле app/config/config.php вы можете увидеть все доступные вам переменные конфигурации по умолчанию.

Основное использование

Опции конфигурации Flight

Ниже приведен список всех доступных настроек конфигурации:

  • flight.base_url ?string - Переопределить базовый URL запроса, если Flight работает в подкаталоге. (по умолчанию: null)
  • flight.case_sensitive bool - Учитывать регистр при сопоставлении URL. (по умолчанию: false)
  • flight.handle_errors bool - Разрешить Flight обрабатывать все ошибки внутренними средствами. (по умолчанию: true)
    • Если вы хотите, чтобы Flight обрабатывал ошибки вместо стандартного поведения PHP, это должно быть true.
    • Если у вас установлен Tracy, вы должны установить это значение в false, чтобы Tracy могла обрабатывать ошибки.
    • Если у вас установлен плагин APM, вы должны установить это значение в true, чтобы APM мог логировать ошибки.
  • flight.log_errors bool - Логировать ошибки в файл ошибок веб-сервера. (по умолчанию: false)
    • Если у вас установлен Tracy, Tracy будет логировать ошибки на основе конфигураций Tracy, а не этой конфигурации.
  • flight.debug bool - Выводить подробную информацию об ошибке (сообщение исключения, код и трассировку стека) в браузере при возникновении ошибки. (по умолчанию: false)
    • Никогда не включайте это в продакшене — это раскрывает внутренние детали приложения. Используйте только для локальной разработки или тестирования.
    • Когда false, вместо этого будет показано общее сообщение 500 Internal Server Error. Используйте вместе с flight.log_errors для захвата ошибок на стороне сервера.
  • flight.allow_method_override bool - Разрешить переопределение HTTP-метода через заголовок запроса X-HTTP-Method-Override или поле _method в теле POST-запроса. (по умолчанию: true)
    • Рекомендуется установить значение false для приложений, которым не требуется подмена метода на основе HTML-форм, так как это предотвращает подделку клиентами запросов DELETE или PUT через стандартную POST-форму.
    • Подробнее см. в разделе Безопасность.
  • flight.views.path string - Каталог, содержащий файлы шаблонов представлений. (по умолчанию: ./views)
  • flight.views.extension string - Расширение файлов шаблонов представлений. (по умолчанию: .php)
  • flight.content_length bool - Устанавливать заголовок Content-Length. (по умолчанию: true)
    • Если вы используете Tracy, это необходимо установить в false, чтобы Tracy могла корректно отображаться.
  • flight.v2.output_buffering bool - Использовать устаревшую буферизацию вывода. См. миграцию на v3. (по умолчанию: false)

Конфигурация загрузчика

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

// Включить загрузку классов с подчёркиваниями
// По умолчанию true
Loader::$v2ClassLoading = false;

Переменные

Flight позволяет сохранять переменные, чтобы их можно было использовать в любом месте вашего приложения.

// Сохранить вашу переменную
Flight::set('id', 123);

// В другом месте вашего приложения
$id = Flight::get('id');

Чтобы проверить, была ли установлена переменная, вы можете сделать следующее:

if (Flight::has('id')) {
  // Выполнить какие-то действия
}

Вы можете очистить переменную следующим образом:

// Очищает переменную id
Flight::clear('id');

// Очищает все переменные
Flight::clear();

Примечание: То, что вы можете установить переменную, не означает, что вам следует это делать. Используйте эту функцию экономно. Причина в том, что всё, хранящееся здесь, становится глобальной переменной. Глобальные переменные плохи, потому что их можно изменить из любой части вашего приложения, что затрудняет отслеживание ошибок. Кроме того, это может усложнить такие вещи, как модульное тестирование.

Ошибки и исключения

Все ошибки и исключения перехватываются Flight и передаются методу error, если flight.handle_errors установлено в true.

Стандартное поведение — отправка общего ответа HTTP 500 Internal Server Error с некоторой информацией об ошибке.

Вы можете переопределить это поведение под свои нужды:

Flight::map('error', function (Throwable $error) {
  // Обработка ошибки
  echo $error->getTraceAsString();
});

По умолчанию ошибки не логируются на веб-сервере. Вы можете включить это, изменив конфигурацию:

Flight::set('flight.log_errors', true);

404 Not Found

Когда URL не найден, Flight вызывает метод notFound. Стандартное поведение — отправка ответа HTTP 404 Not Found с простым сообщением.

Вы можете переопределить это поведение под свои нужды:

Flight::map('notFound', function () {
  // Обработка не найденного
});

См. также

  • Расширение Flight - Как расширить и настроить основную функциональность Flight.
  • Модульное тестирование - Как писать модульные тесты для вашего приложения на Flight.
  • Tracy - Плагин для расширенной обработки ошибок и отладки.
  • Расширения Tracy - Расширения для интеграции Tracy с Flight.
  • APM - Плагин для мониторинга производительности приложения и отслеживания ошибок.

Устранение неполадок

  • Если у вас возникают проблемы с поиском всех значений конфигурации, вы можете выполнить var_dump(Flight::get());

История изменений

  • v3.18.1 - Добавлены опции конфигурации flight.debug и flight.allow_method_override.
  • v3.5.0 - Добавлена конфигурация flight.v2.output_buffering для поддержки устаревшей буферизации вывода.
  • v2.0 - Добавлены основные конфигурации.