Мое предложение - сначала подумать об архитектурных целях вашей CMS. Конечно, это будет на 100% вашим, но это не значит, что вы не будете страдать, если не начнете понимать, что подскажет, где и как, что это делает и как мне это получить отсюда.
Вот почему я определенно не советую вам иметь библиотеки, вызывающие библиотеки. С моей точки зрения, ни один из ваших классов не должен зависеть ни от чего, кроме первых нескольких основных классов в вашем потоке приложений, поскольку вы хотите распределить работу в некоторых других отдельных автономных классах. Вы должны стремиться к исключительности и атомарности с вашими основными классами.
Я не знаю, каким будет ваш архитектурный шаблон (я предполагаю, что это будет MVC, HMVC или PAC), но я думаю, что лучше сначала определить несколько базовых классов [/ core], которые заложат основы для инициализации приложения путем создания экземпляров некоторых библиотек [/ library], которые необходимы для анализа запроса входящих запросов и выполнения некоторых заданий по умолчанию перед инициализацией запрошенного контроллера [/ controllers].
Библиотеки должны иметь одну цель. Библиотека обработки сеансов должна обрабатывать только сеансы, маршрутизацию библиотеки маршрутизации и т. Д. Изначально вы можете создать свой базовый контроллер и базовую модель и поместить их в [/ core], а контроллеры [/ controllers] и модели [/ models] расширяют вашу базу контроллер и модель от [/core].
Как всегда, чем меньше ваши компоненты, тем лучше. Хорошее решение будет легким, небольшим и обширным по своему назначению. Если в будущем вы поменяете какие-либо дизайнерские идеи, вы сможете просто изменить основные классы и оказать огромное влияние на все приложение, не внося никаких дальнейших изменений в других местах.