Приложение, (или 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
.