modulite icon indicating copy to clipboard operation
modulite copied to clipboard

Публичный API модуля

Open Myks92 opened this issue 2 years ago • 3 comments

Было бы здорово иметь возможность настраивать публичные контракты только по определенной папке (слою), вместо классов.

Например, если использовать слои из DDD: Application, Domain, Ifrastructure, то в модуле/подмодуле можно было бы сделать публичным всю папку Ifrastructure, а остальные бы остались приватными. Либо сделать слой/папку API к которым другие модули могут обращаться.

Сейчас же такое можно реализовать с выделением подмодуля, но это не то что нужно. Поэтому остаётся только прописывать все классы данной папки для публичного доступа.

Myks92 avatar Dec 05 '22 22:12 Myks92

Если вам нужно в "папке" прописывать все классы для публичного доступа, то просто не инициализируйте в этой "папке" modulite.

githubjeka avatar Dec 23 '22 09:12 githubjeka

Да, можно сделать так, я об этом писал выше:

Сейчас же такое можно реализовать с выделением подмодуля, но это не то что нужно.

При таком использовании получится, что modulite будет использоваться не как модуль с точки зрения задумки и идеологии. Потому что с точки зрения структуры это модуль с разными слоями. Из-за этого так же увеличится количество файлов modulite и нарушится понимание для всех того что такое модуль…

Например модуль Заказ будет иметь данную структуру:

src/
    Order
        Adapter
        Application
        Domain
        Infrastructure

Из этого модуля к слою Adapter могут обращаться все модули:

export:
     - Adapter\\*

При этом в данном модуле слой Infrastructure может иметь зависимости от всего:

require:
     - *

или определенных namespace или их префиксов:

require:
     - Symfony\\*
     - Ramsey\\*
     - Doctrine\\Common\\Collections\\ArrayCollection

Таким образом мы можем более гибко контролировать такие принципы как «open и closed» «High Cohesion и Low Coupling». Я знаю, что modulite не для тех целей, как Deptrac. Однако уже сейчас есть реализация с полными именами классов в export и require я всего лишь хочу упросить данную возможность для большого списка классов-зависимостей и экспортируемых классов в modulite. Буду рад, если это примется в Modulite, надеюсь, что это поможет многим.

В любом случае уже сейчас пробую на своих проектах данный инструмент и в целом инструмент хороший, так как тесно связан с редактором, в первую очередь.

Спасибо за удельное время!

Myks92 avatar Dec 24 '22 00:12 Myks92

Поддерживаю!

Особенно не хватает возможности разрешить использовать любые либы определенного вендора.

require:
     - "#psr/*"

don-tre avatar Feb 21 '23 15:02 don-tre