Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Myks92 opened this issue Dec 5, 2022 · 3 comments
Open

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

Myks92 opened this issue Dec 5, 2022 · 3 comments

Comments

@Myks92
Copy link

Myks92 commented Dec 5, 2022

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

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

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

@githubjeka
Copy link
Contributor

githubjeka commented Dec 23, 2022

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

@Myks92
Copy link
Author

Myks92 commented Dec 24, 2022

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

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

При таком использовании получится, что 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, надеюсь, что это поможет многим.

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

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

@don-tre
Copy link

don-tre commented Feb 21, 2023

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

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

require:
     - "#psr/*"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants