使用Slim'依赖容器的正确方法


Propery way to use Slim's dependency container

根据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);

一种方式比另一种方式更合适吗?

使用第二种方法时如何添加服务?

一种方式比另一种方式更合适吗?

有几乎相同的,所以在我看来没有合适的方法,但我做了第二种方法,因为这种方式你可以添加logger和其他东西之前,你创建实际苗条的应用程序实例。

使用第二种方法时如何添加服务?

与使用第一个方法相同

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