dakujem/slim-factory

一个帮助您启动Slim v4应用的微型工具。

1.0 2020-11-10 10:05 UTC

This package is auto-updated.

Last update: 2024-08-29 10:09:17 UTC


README

PHP from Packagist Test Suite Coverage Status

💿 composer require dakujem/slim-factory

用法

use Dakujem\Slim\SlimFactory;

构建App实例,可选提供装饰器和/或App实例的容器

$app = SlimFactory::build();
$app = SlimFactory::build($decorators);
$app = SlimFactory::build($decorators, $container);

或者,使用容器中的核心服务构建App实例,可选装饰器

$app = SlimFactory::buildFromContainer($container);
$app = SlimFactory::buildFromContainer($container, $decorators);

如果您已经有一个Slim App实例,您可以使用装饰器来装饰它

$app = Slim\Factory\AppFactory::create( ... );
SlimFactory::decorate($app, $decorators);

一个 装饰器可以是

  • AppDecoratorInterface实现的实例
  • 此类名称的字符串
  • 提供此类实例的调用提供者 **
  • 直接装饰Slim应用实例的调用 **
class MiddlewareDecorator implements AppDecoratorInterface
{
    public function decorate(App $slim): void
    {
        $slim->addRoutingMiddleware();
        $slim->addBodyParsingMiddleware();
        $slim->addErrorMiddleware();
    }
}

// The following 4 decorators are equivalent:
$decorators = [
    new MiddlewareDecorator(),          // a decorator instance
    MiddlewareDecorator::class,         // a class name
    fn() => new MiddlewareDecorator(),  // a decorator provider
    function(App $slim): void {         // a callable decorator
        $slim->addRoutingMiddleware();
        $slim->addBodyParsingMiddleware();
        $slim->addErrorMiddleware();
    }
];

** 注意

如果使用调用作为装饰器,无论其签名如何,都会始终调用。

如果调用返回装饰器(AppDecoratorInterface的实现)的实例,则立即应用返回的装饰器。

调用接收被装饰的App的实例作为第一个参数,这与AppDecoratorInterface::decorate方法的签名相同。

测试

使用以下命令运行单元测试

$ composer test

贡献

欢迎提出想法、功能请求和其他贡献。请发送PR或创建问题。