ПАТТЕРН СОСТОЯНИЕ PHP
Паттерн состояние (State) в PHP - это поведенческий паттерн проектирования, который позволяет изменять поведение объекта в зависимости от его состояния.
В данном паттерне объекты имеют внутреннее состояние, которое может изменяться, и на основе текущего состояния объекта происходят различные действия. Например, можно реализовать паттерн состояние для объекта "Заказ", который может находиться в состоянии "Новый", "Ожидает оплату", "Доставляется" и т.д.
Для реализации паттерна состояние в PHP можно использовать интерфейсы и абстрактные классы. Каждое состояние объекта реализуется в виде отдельного класса, который наследуется от абстрактного класса State:
abstract class State { public abstract function handle(): string;}
Конкретные классы состояний должны реализовывать абстрактный класс State:
class NewState extends State { public function handle(): string { return "Заказ в новом состоянии"; }}
class PaymentState extends State { public function handle(): string { return "Ожидание оплаты"; }}
class DeliveryState extends State { public function handle(): string { return "Доставка заказа"; }}
Далее необходимо создать класс контекста Context, содержащий ссылку на текущее состояние:
class Context { private $state; public function __construct(State $state) { $this->state = $state; } public function setState(State $state) { $this->state = $state; } public function getState(): State { return $this->state; } public function handle(): string { return $this->state->handle(); }}
Теперь можно создать объекты состояний и контекста и использовать их:
$newState = new NewState();$paymentState = new PaymentState();$deliveryState = new DeliveryState(); $context = new Context($newState);echo $context->handle(); // Выводит: "Заказ в новом состоянии" $context->setState($paymentState);echo $context->handle(); // Выводит: "Ожидание оплаты" $context->setState($deliveryState);echo $context->handle(); // Выводит: "Доставка заказа"
Паттерны проектирования для начинающих с примерами на PHP
Паттерны проектирования API
Объектно-ориентированное программирование и паттерны проектирования в PHP - 1
Нейронная сеть на PHP
Важнейший шаблон программирования из 23-х
Шаблоны проектирования микросервисов на примере Авито / Фрол Крючков (Авито)
System Design and Architecture: продвинутые паттерны
Состояние (state). Шаблоны проектирования.
State - Шаблон проектирования Состояние
Паттерн Фабрика на реальном примере в PHP