meta-tech/silex-controller-service

Silex2的控制器服务提供商。

1.0.0 2017-03-15 02:42 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:14:47 UTC


README

Silex 提供的用于管理依赖注入和控制器挂载的服务。

要求

PHP 7.0

安装

可以使用 Composer 安装此包。

composer require meta-tech/silex-controller-service

或者将包添加到您的composer.json文件中。

"require": {
    "meta-tech/silex-controller-service" : "~1.0"
}

用法

该服务提供商将为使用其依赖项构建的控制器实例创建一个服务。
如果控制器实现了Silex\Api\ControllerProviderInterface,则服务提供商还将控制器路由挂载到定义的路由入口点。

示例

假设您有一个控制器Test,它在实例化时具有依赖项

class Test implements ControllerProviderInterface
{
    public function __construct(Application $app, string $foo)
    {
        // do stuff
    }

您可以使用ControllerServiceProvider来创建一个服务来管理您的控制器类实例化

use MetaTech\Silex\Provider\ControllerServiceProvider;
use Acme\Ctrl\Test;
...

$app->register(new ControllerServiceProvider(Test::class, [$app, 'foo'], '/test', 'ctrl.'));

第一个参数 是您的 控制器类
第二个参数 是您的 控制器依赖项 的数组(默认 [])
第三个参数 定义您的控制器 路由入口点(默认 null:禁用控制器路由的挂载)
第四个参数 定义您的 服务的命名空间 以访问您的控制器(默认 'ctrl.')

注册的服务的名称是 给定的命名空间 后跟您的 控制器类短名

在先前的示例中,$app['ctrl.Test'] 现在可用并返回您的控制器实例。

现在,您的控制器中的 connect 方法可以利用此服务来定义合适的路由,例如

class Test implements ControllerProviderInterface
{
    ...

    public function connect(Application $app)
    {
        $collection = $app['controllers_factory'];
        $_          = 'ctrl.Test';

        $collection->match('/'    , "$_:index");
        $collection->match('/test', "$_:test");

        return $collection;
    }
}

控制器的路由挂载到定义的路由入口点(第三个参数);

有关高级控制器架构的示例,请参阅 meta-tech\silex-core 中的MetaTech\Silex\Ws\Controller源代码。

许可证

该项目基于MIT许可证发布,请参阅LICENSE文件。