meta-tech / silex-controller-service
Silex2的控制器服务提供商。
1.0.0
2017-03-15 02:42 UTC
Requires
- php: ^7.0
- pimple/pimple: ~3.0
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文件。