execute()interface Command {
public function execute(): void;
public function undo(): void;
}
class SendEmailCommand implements Command {
public function execute(): void { /* відправити */ }
public function undo(): void { /* скасувати */ }
}
class CommandBus {
private array $history = [];
public function dispatch(Command $cmd): void {
$cmd->execute();
$this->history[] = $cmd;
}
}
CQRS (Command Bus), черги задач, транзакційний скрипт, undo/redo в редакторах.