PHPackages                             masyasmv/otus\_adapter\_generator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. masyasmv/otus\_adapter\_generator

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

masyasmv/otus\_adapter\_generator
=================================

Домашка Адаптеры и Мост

00PHPCI passing

Since Jul 25Pushed 9mo agoCompare

[ Source](https://github.com/MasyaSmv/otus_adapter_generator)[ Packagist](https://packagist.org/packages/masyasmv/otus_adapter_generator)[ RSS](/packages/masyasmv-otus-adapter-generator/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

otus-adapter-generator
======================

[](#otus-adapter-generator)

Автоматический генератор адаптеров для PHP-интерфейсов с помощью Reflection и простого IoC.

---

📦 Возможности
-------------

[](#-возможности)

- **Генерация адаптеров** по любому интерфейсу:

    - Методы `getX()` вызывают `IoC::resolve('X', "Interface:x.get", $obj)` и возвращают значение.
    - Методы `setX($v)` создают и выполняют команду `ICommand` через IoC: `IoC::resolve(ICommand::class, "Interface:x.set", $obj, $v)->execute()`.
    - Остальные методы вызывают `IoC::resolve(''|ReturnType::class, "Interface:method", $obj, ...args)`.
- **Поддержка стилей имен** интерфейсов:

    - `IUser` → `UserAdapter`
    - `UserInterface` → `UserAdapter`
    - `Some` → `SomeAdapter`
- **Модульная структура**: генератор разбит на мелкие хелперы для удобства тестирования и расширения.
- **Автосоздание папки** назначения, если её не было.
- **Полный набор PHPUnit-тестов**: покрываются все ветки генерации (геттеры, сеттеры, общие методы, наследование, отсутствие интерфейса).
- **CI на GitHub Actions**: автоматическая проверка при каждом пуше и PR.

---

🛠 Требования
------------

[](#-требования)

- PHP ≥ 8.0
- Composer
- Разработческие зависимости (phpunit/phpunit ^10)

---

⚡ Быстрый старт
---------------

[](#-быстрый-старт)

1. Создайте интерфейс, например:

    ```
