上节,我们迈出了前进的一小步—Composer研读,了解了Composer组件加载机制。从这节开始,我们学习Slim几大核心模块—依赖注入容器、路由、中间件等。
依赖注入容器可以注入一些服务,主要用于解决组件之间的依赖关系。Slim支持Container-Interop接口实现的容器,我们可以使用Slim内置容器Pimple或其他第三方容器,例如PHP-DI。这里为了方便研读,我们使用Slim内置容器—Pimple
若你使用了其他依赖注入容器,你需要将容器实例注入到Slim程序主体的构造方法中。
// 声明一个应用主体对象并加载配置文件
$container = new \Slim\Container
$app = new \Slim\App($container);
你可显示或隐式地依赖容器中获取服务。
如下示例是从Slim应用程序中获取一个显示实例:
/**
* Example GET route
*
* @param \Psr\Http\Message\ServerRequestInterface $req PSR7 request
* @param \Psr\Http\Message\ResponseInterface $res PSR7 response
* @param array $args Route parameters
*
* @return \Psr\Http\Message\ResponseInterface
*/
$app->get('/foo', function ($req, $res, $args) {
$myService = $this->get('myService');
return $res;
});
你可以这样隐式地从容器中取得服务:
/**
* Example GET route
*
* @param \Psr\Http\Message\ServerRequestInterface $req PSR7 request
* @param \Psr\Http\Message\ResponseInterface $res PSR7 response
* @param array $args Route parameters
*
* @return \Psr\Http\Message\ResponseInterface
*/
$app->get('/foo', function ($req,