madewithlove/service-providers

适用于service-providers兼容容器的通用服务提供商仓库

0.3.2 2017-03-18 11:28 UTC

This package is auto-updated.

Last update: 2024-09-08 01:07:24 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

适用于[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

贡献

请参阅CONTRIBUTINGCONDUCT以获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件heroes@madewithlove.be联系,而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件