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

Согласно http://www.slimframework.com/docs/tutorial/first-app.html, сначала создается тонкий объект, а затем получается контейнер и к нему добавляются сервисы.

$app = new \Slim\App(["settings" => $config]);
$container = $app->getContainer();
$container['logger'] = function($c) {
    ...
    return $logger;
};

Тем не менее, http://www.slimframework.com/docs/concepts/di.html конкретно посвященный контейнеру зависимостей, гораздо сильнее и гласит:

Вам не нужно предоставлять контейнер зависимостей. Однако, если вы это сделаете, вы должны внедрить экземпляр контейнера в конструктор приложения Slim.

$container = new \Slim\Container; $app = new \Slim\App($container);

Один способ более правильный, чем другой?

Как добавляются услуги при использовании второго подхода?

1 ответ

Решение

Один способ более правильный, чем другой?

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

Как добавляются услуги при использовании второго подхода?

Так же, как использование первого подхода

$container = new \Slim\Container;
$container['logger'] = function($c) {
    ...
    return $logger;
};

$app = new \Slim\App($container);
Другие вопросы по тегам