Это хороший способ организовать классы из сервисного уровня? - PullRequest
3 голосов
/ 27 августа 2011

В настоящее время у меня есть следующая структура:

Model/
    Entities/
    Repositories/
    Proxies/
    Services/
        User/
            Manager.php
            Relations/
                 Friendship.php
        Group/
            Manager.php
            Administration.php
            Posts/
                Manager.php
        ...

Поскольку я использую Doctrine, я выбрал эту структуру, потому что каждая папка соответствует одной сущности.Есть ли какие-либо проблемы в организации этого способа?

Я хотел бы узнать ваше мнение о том, как избежать изменений в структуре папок в будущем, вызванных плохой организацией сейчас.Есть ли лучший способ организовать классы из уровня обслуживания?Что вы можете порекомендовать?Спасибо.

1 Ответ

1 голос
/ 29 августа 2011

Это выглядит как идеальная верная структура, однако у меня могут быть две рекомендации:

  • Я обычно помещаю свои прокси вне папки библиотеки, потому что во-первых, это специальный класскоторый не следует рекомендации PSR-0, а во-вторых, вам может понадобиться удалить эти классы при обновлении базы данных, по этим причинам я поместил их в /var/tmp/proxies

  • структура сервисного уровня выглядит хорошо, но обязательно примените ее к своей логике, а не к своим сущностям, я имею в виду, что UserService вполне подходит для сбора всей логики за пользователем, но может также использоваться с некоторыми другими сущностями из-за их взаимосвязи.Заключение «Одна сущность! == Одна служба»

  • Я также избегаю формы множественного числа, это немного личная точка зрения, но она немного похожа на соглашение об именах, используемое в СУБД,Таблица представляет собой объект и, следовательно, не должна принимать формы множественного числа.Кстати, большинство фреймворков (т.е. Zf / Symfony2 / Doctrine2) используют единственное число.

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

Если вы решите один день реорганизовать свою структуру, возьмите день или два и делайте это каждый раз, или не делайте.

...