madewithlove / service-providers
适用于service-providers兼容容器的通用服务提供商仓库
0.3.2
2017-03-18 11:28 UTC
Requires
- php: >=5.6.0
- container-interop/service-provider: dev-master
Requires (Dev)
- illuminate/database: ^5.4
- illuminate/filesystem: ^5.4
- league/container: ^2.4
- league/event: ^2.1
- league/factory-muffin: ^2.1
- league/flysystem: ^1.0
- league/route: ^2.0
- league/tactician: ^1.0
- madewithlove/php-cs-fixer-config: ^1.2
- maximebf/debugbar: ^1.13
- mockery/mockery: ^0.9.9
- monolog/monolog: ^1.22
- phpunit/phpunit: ^6.0
- relay/relay: ^1.1
- symfony/console: ^3.2
- twig/twig: ^2.2
- zendframework/zend-diactoros: ^1.3
README
适用于[service-providers]兼容容器的通用服务提供商仓库
安装
通过Composer
$ composer require madewithlove/service-providers
此仓库不附带任何第三方包,您需要自行安装。例如,如果您需要FlysystemServiceProvider
,则需要在安装此包的同时安装Flysystem。
使用方法
服务提供商
如果您使用的容器已经与service-provider兼容,则可以像平常一样注册它。
否则,您可以使用装饰器或桥接器,您可以在Packagist上找到一些,此包也附带了一些,例如用于league/container的。
use League\Flysystem\FilesystemInterface; use League\League\Container; use Madewithlove\ServiceProviders\Bridges\LeagueContainerDecorator; use Madewithlove\ServiceProviders\Filesystem\FlysystemServiceProvider; $container = new LeagueContainerDecorator(new Container()); $container->addServiceProvider(new FlysystemServiceProvider(...))); $filesystem = $container->get(FilesystemInterface::class);
对于需要配置的提供者,您可以将其作为构造函数参数传递。请查看提供者的签名以了解它们接受哪些选项。
$provider = new EloquentServiceProvider([ 'local' => [ 'driver' => 'sqlite', 'etc' => 'etc, ], 'production' => [ 'driver' => 'mysql', 'etc' => 'etc, ], ]);
实用工具
此包还附带了一些编写您自己的服务提供商的实用工具
别名:容器中现有值的别名
public function getServices() { return ['my_alias' => new Alias('to_something_else')]; }
参数:要存储在容器中的普通值
public function getServices() { return ['views_path' => new Parameter(__DIR__.'/views)]; }
ParametersServiceProvider:一个空白服务提供商,可以快速在容器中设置多个值
new ParametersServiceProvider([ 'foo' => 'bar', 'bar' => 'baz', ]); $container->get('foo'); // (string) "bar"
PrefixedProvider:一个装饰器,用于使用给定的字符串前缀提供者的服务
new PrefixedProvider('config', new ParametersServiceProvider([ 'foo' => 'bar', ])); $container->get('config.foo'); // (string) "bar"
可用的服务提供商
├── Bridges
│ └── LeagueContainerDecorator.php
├── CommandBus
│ └── TacticianServiceProvider.php
├── Console
│ └── SymfonyConsoleServiceProvider.php
├── Database
│ ├── EloquentServiceProvider.php
│ └── FactoryMuffinServiceProvider.php
├── Development
│ ├── DebugbarServiceProvider.php
│ └── MonologServiceProvider.php
├── Events
│ └── LeagueEventsServiceProvider.php
├── Filesystem
│ └── FlysystemServiceProvider.php
├── Http
│ ├── LeagueRouteServiceProvider.php
│ ├── RelayServiceProvider.php
│ └── ZendDiactorosServiceProvider.php
├── Templating
│ └── TwigServiceProvider.php
└── Utilities
├── Alias.php
├── Parameter.php
├── ParametersServiceProvider.php
└── PrefixedProvider.php
请参阅每个提供者的构造函数参数以了解它们接受的选项。欢迎贡献力量!
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
测试
$ composer test
贡献
请参阅CONTRIBUTING和CONDUCT以获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件heroes@madewithlove.be联系,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。