jedibc/decorator-stack

用于堆叠装饰器的简单工具

v1.0.1 2015-02-17 09:10 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:00:50 UTC


README

Build Status

这是一个用于堆叠装饰器的简单工具。

安装

建议通过Composer安装此库。将jedibc/decorator-stack包添加到您的composer.json文件中

{
    "require": {
        "jedibc/decorator-stack": "@stable"
    }
}

使用方法

目前,如果您想装饰一个对象,您可能需要做类似这样的事情

$decoratedObject = new Foo\Bar\Decorator1(
	new Foo\Bar\Decorator2(
    	new Foo\Bar\Decorator3(
        	new ObjectToDecorate()
        ), [$someConstuctorArgument])
);

装饰器越多,代码越丑陋。

使用DecoratorStack,您可以简化它

$stack = (new DecoratorStack\Builder('Foo\Bar\DummyInterface'))
	->push('Foo\Bar\Decorator1')
	->push('Foo\Bar\Decorator2', [$someConstuctorArgument])
	->push('Foo\Bar\Decorator3');

$decoratedObject = $stack->resolve(new ObjectToDecorate())

每个装饰器和要装饰的对象必须实现Foo\Bar\DummyInterface接口(或者可以扩展抽象类)。

灵感来源

许可证

DecoratorStack在MIT许可证下发布。有关详细信息,请参阅捆绑的LICENSE文件。