geekish / slimbox

带有 Unbox 容器的 Slim 框架

0.3.0 2016-12-01 19:16 UTC

This package is auto-updated.

Last update: 2024-09-11 14:33:11 UTC


README

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

mindplay/unbox 带入 Slim 框架

安装

通过 Composer

composer require geekish/slimbox

用法

服务提供者

本包中最重要的类是 Geekish\Slimbox\DefaultServicesProvider。它确保了与 Slim 所需的相同服务通过 Unbox 可用。除了容器更改之外,它还与 Slim\DefaultServicesProvider 不同,首先注册服务下的 FQCN,然后通过接口注册别名,最后注册 slim(例如 "router","foundHandler")使用的简短别名。通过类名注册服务使 Unbox 能够自动将它们作为依赖项注入到其他类中。

服务提供者不会自动为您注册,所以您需要自己完成

use Geekish\Slimbox\DefaultServicesProvider;
use mindplay\unbox\ContainerFactory;

$factory = new ContainerFactory;
$factory->add(new DefaultServicesProvider);

$container = $factory->createContainer();

设置

还包括 Geekish\Slimbox\Settings,它扩展自 Slim\Collection。此类替换了 Slim 在 "settings" 下注册的简单数组(参见:Slim 默认设置)。

设置可以通过 DefaultServicesProvider 的构造函数提供

$factory->add(new DefaultServicesProvider([
    "outputBuffering" => "prepend",
]));

或者通过 ContainerFactory 上的 configure() 方法

$factory->configure(
    Settings::class,
    function (Settings $settings) {
        $settings['displayErrorDetails'] = true;
        return $settings;
    }
);

容器和容器工厂(可选)

本包包含从 Unbox 的扩展(最终)容器和 ContainerFactory。用法几乎与直接使用 Unbox 完全相同,除了扩展容器部分实现了 ArrayAccess。这允许您将容器用作数组来 访问 服务;然而,由于 Unbox 使用工厂类来创建容器,您不能使用数组表示法在容器上设置/配置服务。

要使用扩展的 ContainerFactory

use Geekish\Slimbox\ContainerFactory;
use Geekish\Slimbox\DefaultServicesProvider;
use Slim\App;

$factory = new ContainerFactory;
$factory->add(new DefaultServicesProvider([
    "outputBuffering" => "prepend",
]));

$container = $factory->createContainer();

包中的 ContainerContainerFactory 的使用完全是可选的;它们仅包含以便于使用并与 Slim 包含的 Container 保持一致性。只需将上面的代码段中的 Geekish\Slimbox\ContainerFactory 替换为 mindplay\unbox\ContainerFactory 即可。

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

测试

$ composer test

贡献

请参阅 CONTRIBUTINGCONDUCT 了解详细信息。

安全

如果您发现任何安全问题,请通过电子邮件 hannahwarmbier@gmail.com 而不是使用问题跟踪器。

鸣谢

许可

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