定制 masyasmv/otus-macro-commands 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

masyasmv/otus-macro-commands

最新稳定版本:v1.0.0

Composer 安装命令:

composer require masyasmv/otus-macro-commands

包简介

Macro commands implementation for Otus course

README 文档

README

tests PHP License

Учебный мини-фреймворк для шаблона 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

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-07-30