masyasmv/otus-macro-commands
最新稳定版本:v1.0.0
Composer 安装命令:
composer require masyasmv/otus-macro-commands
包简介
Macro commands implementation for Otus course
README 文档
README
Учебный мини-фреймворк для шаблона Command с поддержкой:
- MoveCommand / RotateCommand — базовые действия (переместить, повернуть).
- CheckFuelCommand / BurnFuelCommand — расход топлива с проверкой остатка.
- MacroCommand — цепочка команд c атомарным выполнением (останавливается и прокидывает
CommandExceptionпри ошибке). - ChangeVelocityCommand — пересчёт вектора мгновенной скорости после поворота.
Пример макрокоманд в игре «Космическая битва»:
$move = new MacroCommand( new CheckFuelCommand(5), // 1) есть ли топливо? new MoveCommand(1), // 2) сдвигаемся new BurnFuelCommand(5) // 3) вычитаем расход ); $rotate = new MacroCommand( new RotateCommand($rotator, 30.0), // меняет угол new ChangeVelocityCommand(30.0) // и вектор скорости );
📦 Установка
Копировать
Редактировать
git clone https://github.com/MasyaSmv/otus_macro-commands.git
cd otus_macro-commands
composer install
🚀 Быстрый старт
use Masyasmv\OtusMacroCommands\Command\{MoveCommand, CheckFuelCommand, BurnFuelCommand, MacroCommand}; use Masyasmv\OtusMacroCommands\Model\Ship; $ship = new Ship(); // реализует Positionable, VelocityAware, Rotatable, FuelTankAware $ship->refillFuel(100); $moveForward = new MacroCommand( new CheckFuelCommand(10), new MoveCommand(1), new BurnFuelCommand(10) ); $moveForward->execute($ship);
🗂️ Структура
src/ ├── Command/ // все команды (+ исключения) ├── Contract/ // маленькие интерфейсы (Positionable, Rotatable ...) ├── Service/ // Mover, Rotator, FuelTank и т. д. └── ValueObject/ // Vector2D, etc. tests/ // PHPUnit-тесты
🧪 Тесты
# юнит‐тесты composer test # отчёт покрытия (HTML в папке coverage/) composer test-coverage
🔧 CI
В проекте лежит настроенный workflow .github/workflows/ci.yml — он устанавливает PHP 8.3, тянет зависимости и запускает «composer test».
📜 Лицензия
Код распространяется под лицензией MIT — см. LICENSE.
统计信息
- 总下载量: 3
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-07-30