コード例 #1
0
ファイル: DecoratorWiki.php プロジェクト: manachyn/trainings
class ConcreteComponent extends AbstractComponent
{
    public function operation()
    {
        // ...
    }
}
abstract class AbstractDecorator extends AbstractComponent
{
    private $_component;
    public function __construct(AbstractComponent $component)
    {
        $this->_component = $component;
    }
    public function operation()
    {
        $this->_component->operation();
    }
}
class ConcreteDecorator extends AbstractDecorator
{
    public function operation()
    {
        // ... расширенная функциональность ...
        parent::operation();
        // ... расширенная функциональность ...
    }
}
$decoratedComponent = new ConcreteDecorator(new ConcreteComponent());
$decoratedComponent->operation();