Skip to content

Files

Latest commit

author
Dominik Liebler
Dec 14, 2019
579a5ac · Dec 14, 2019

History

History
This branch is 1 commit ahead of, 247 commits behind DesignPatternsPHP/DesignPatternsPHP:main.

Decorator

Purpose

To dynamically add new functionality to class instances.

Examples

  • Web Service Layer: Decorators JSON and XML for a REST service (in this case, only one of these should be allowed of course)

UML Diagram

Alt Decorator UML Diagram

Code

You can also find this code on GitHub

Booking.php

.. literalinclude:: Booking.php
   :language: php
   :linenos:

BookingDecorator.php

.. literalinclude:: BookingDecorator.php
   :language: php
   :linenos:

DoubleRoomBooking.php

.. literalinclude:: DoubleRoomBooking.php
   :language: php
   :linenos:

ExtraBed.php

.. literalinclude:: ExtraBed.php
   :language: php
   :linenos:

WiFi.php

.. literalinclude:: WiFi.php
   :language: php
   :linenos:

Test

Tests/DecoratorTest.php

.. literalinclude:: Tests/DecoratorTest.php
   :language: php
   :linenos: