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 в редакторах.