Приложение, (или Slim\App) является точкой входа в ваше Slim-приложение и используется для
регистрации маршрутов, которые ссылаются на ваши обратные вызовы или контроллеры.
// instantiate the App object
$app = new \Slim\App();
// Add route callbacks
$app->get('/', function ($request, $response, $args) {
return $response->withStatus(200)->write('Hello World!');
});
// Run application
$app->run();Приложение принимает только один аргумент. Это может быть либо экземпляр контейнера либо массив для настройки контейнера по умолчанию, который создается автоматически.
Также есть ряд настроек, которые используются Slim. Они сохраняются в settings
ключе конфигурации. Вы также можете добавить свои настройки для конкретного приложения.
Например, мы можем установить для параметра Slim значение displayErrorDetails true, а также настроить
Monolog следующим образом:
$config = [
'settings' => [
'displayErrorDetails' => true,
'logger' => [
'name' => 'slim-app',
'level' => Monolog\Logger::DEBUG,
'path' => __DIR__ . '/../logs/app.log',
],
],
];
$app = new \Slim\App($config);Поскольку настройки хранятся в контейнере DI, вы можете получить к ним доступ через settings ключ в
контейнерах. Например:
$loggerSettings = $container->get('settings')['logger'];Вы также можете получить к ним доступ в маршрутных вызовах через $this:
$app->get('/', function ($request, $response, $args) {
$loggerSettings = $this->get('settings')['logger'];
// ...
});Если вам нужно добавить или обновить настройки, сохраненные в контейнере DI после инициализации
контейнера, вы можете использовать этот replace метод в контейнере настроек. Например:
$settings = $container->get('settings');
$settings->replace([
'displayErrorDetails' => true,
'determineRouteBeforeAppMiddleware' => true,
'debug' => true
]);
]);Slim имеет следующие настройки по умолчанию, которые вы можете переопределить:
1.1)append или prepend, то любые echo или print
утверждения захватываются и добавляются или добавляются к Ответу, возвращенному из маршрута, который можно вызывать.
append)false)false отключения системы кэширования FastRoute.