Skip to content

Files

Latest commit

699ff11 · Apr 18, 2024

History

History
This branch is 5 commits behind DesignPatternsPHP/DesignPatternsPHP:main.

State

README.rst

Purpose

Encapsulate varying behavior for the same routine based on an object's state. This can be a cleaner way for an object to change its behavior at runtime without resorting to large monolithic conditional statements.

UML Diagram

Alt State UML Diagram

Code

You can also find this code on GitHub

ContextOrder.php

.. literalinclude:: ContextOrder.php
   :language: php
   :linenos:

StateOrder.php

.. literalinclude:: StateOrder.php
   :language: php
   :linenos:

CreateOrder.php

.. literalinclude:: CreateOrder.php
   :language: php
   :linenos:

ShippingOrder.php

.. literalinclude:: ShippingOrder.php
   :language: php
   :linenos:

OrderDone.php

.. literalinclude:: OrderDone.php
   :language: php
   :linenos:

Test

Tests/StateTest.php

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