PHP

Bounded Context пример на PHP

Bounded Context является ключевой концепцией в доменно-ориентированном проектировании (Domain-Driven Design, DDD), и он описывает логическую границу внутри которой определенный домен моделируется. В контексте программирования на PHP, bounded context может быть представлен как набор классов и функций, которые работают вместе для выполнения конкретной бизнес-функции или набора функций.

Давайте создадим пример двух ограниченных контекстов (bounded contexts) на PHP и покажем, как они могут взаимодействовать друг с другом.

1. Определение двух контекстов:

Контекст Заказов (Order Context):

namespace OrderContext {

    class Order {
        private $items = [];
        private $status;

        public function __construct() {
            $this->status = 'new';
        }

        public function addItem($item) {
            $this->items[] = $item;
        }

        public function getStatus() {
            return $this->status;
        }

        public function completeOrder() {
            $this->status = 'completed';
        }
    }
}

 

Контекст Доставки (Shipping Context):

 

namespace ShippingContext {

    class Shipment {
        private $order;
        private $status;

        public function __construct(\OrderContext\Order $order) {
            $this->order = $order;
            $this->status = 'pending';
        }

        public function shipOrder() {
            if ($this->order->getStatus() === 'completed') {
                $this->status = 'shipped';
                // Логика для отправки заказа
            }
        }
    }
}

 

2. Взаимодействие между контекстами:

Взаимодействие между этими двумя контекстами может быть реализовано следующим образом:

 

// Использование классов из разных контекстов

$order = new \OrderContext\Order();
$order->addItem('item1');
$order->completeOrder();

$shipment = new \ShippingContext\Shipment($order);
$shipment->shipOrder();

 В этом примере:

  • Создается объект `Order` в контексте Заказов.
  • Заказ завершается, и его статус изменяется на 'completed'.
  • Создается объект `Shipment` в контексте Доставки, который принимает объект `Order`.
  • Вызывается метод `shipOrder` объекта `Shipment`, который проверяет статус заказа и изменяет свой статус на 'shipped', если заказ уже завершен.


Таким образом, контекст Доставки взаимодействует с контекстом Заказов, получая от него информацию и изменяя своё состояние в зависимости от состояния заказа.

 

 

Афоризм дня:
Надежды – сны бодрствующих. (510)
PHP

Leave a reply

Яндекс.Метрика