Отделение приложения от библиотеки приложений, общей библиотеки, компонентов и т. Д. - PullRequest
4 голосов
/ 19 июня 2010

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

Мы назовем мое приложение Cat.

Допустим, я создаю библиотеку с именем Dog, которая вроде бы похожа на Zend и содержит множество компонентов, которые выполняют разные задачи (классы базы данных, DAL, маршрутизаторы).чтобы выяснить, какие контроллеры выбрать из заданного URL-адреса и т. д.), и они будут расположены в корневом каталоге / library / dir.

Я также создам библиотеку приложений, которая будет зависеть от конкретного приложения (возможно,содержит класс, такой как FrontController или приложение, чтобы помочь с запуском и настройкой приложения).Он будет расположен в корневом каталоге / app / library /

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

В моем приложении Cat, скажем, я создаю новый объект базы данных.Должен ли я написать:

$database = new Dog_Database();

или было бы лучше иметь класс Cat_Database, который просто расширяет класс Dog_Database?Это означало бы, что позже я могу сказать Cat_Database расширять Ferret_Database вместо этого, если это необходимо ...

Я предполагаю, что основной вопрос заключается в том, должно ли мое приложение вызывать вещи прямо из общей библиотеки или оно должно вызывать приложение-специфичные библиотечные классы, которые, в свою очередь, расширяются из разделяемой библиотеки при необходимости?

1 Ответ

1 голос
/ 19 июня 2010

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

Трудно дать подробный совет по такому широкому вопросу, как этот.Возможно, некоторые из этих концепций помогут вам.

Внедрение зависимостей

Программирование на интерфейсе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...