restyphp / slim-service-provider
为 Slim 3 提供服务提供商
0.2.4
2016-12-17 16:58 UTC
Requires
- php: >=7.0.0
Requires (Dev)
- phpunit/phpunit: 5.5.*
- slim/slim: 3.*
- squizlabs/php_codesniffer: 2.7.*
This package is not auto-updated.
Last update: 2024-09-28 12:01:03 UTC
README
已弃用
为 Slim 3 提供服务提供商
允许通过一个 Provider 类来重用其他应用程序或库的代码,以便能够抽象其初始化和配置。
版本
0.2.4
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 LICENSE 文件
变更日志
查看 CHANGELOG 文件
文档
安装
在 composer.json 文件中添加
{
"require": {
"restyphp/slim-service-provider": "0.2.*"
}
}
加载 Provider
为了使用服务,首先必须在配置数组中注册应用程序中的每个服务。在此数组中必须包含类名(包括完整命名空间)。然后注册负责注册每个服务的 Middleware。
$config = [];
// configuración de Silex
$config['settings'] = [
// slim config
];
// Configuración de los providers
$config['services'] = [
'\ServiceProvider'
];
$app = new \Slim\App($config);
// Se registra el middleware (para todas las rutas) que se encarga de inicializar y dejar disponibles todos los servicios
$app->add('\Resty\Slim\ServiceProviderMiddleware');
// ...
$app->run();
也可以为特定的路由(或路由集合)注册 Middleware。
创建 Provider
所有 Provider 都扩展自抽象类 Resty\Slim\AbstractServiceProvider
use Resty\Slim\AbstractServiceProvider;
use Slim\Container;
class ServiceProvider extends AbstractServiceProvider
{
public static function register(Container $c)
{
$c['service'] = function () {
$o = new \StdClass();
$o->saludo = "Hola";
return $o;
};
}
public static function boot(Container $c)
{
}
}
register() 方法用于创建 Provider 的服务并将它们注册到应用程序中。而 boot() 方法用于在开始处理用户请求之前配置应用程序。
一旦服务被注册,它就可通过 Slim 的 Container 获取。
$app->get('/', function (ServerRequestInterface $request, ResponseInterface $response) {
// Obtención del servicio
$service = $this->get('service');
$body = $response->getBody();
$body->write($service->saludo);
return $response;
});