restyphp/slim-service-provider

为 Slim 3 提供服务提供商

0.2.4 2016-12-17 16:58 UTC

README

已弃用

为 Slim 3 提供服务提供商

Build Status

允许通过一个 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;
});