Создание персональной CMS - классы и библиотеки - PullRequest
3 голосов
/ 21 января 2009

Я создаю свою личную CMS и мне нужен ваш совет по организации основных функций и классов. У меня есть папки:

/shared
   /classes
       DB.php
       Session.php
       Config.php
       ...
   /libraries
       Arrays.php
       DateTime.php
       Email.php
       ...

Файлы в папке 'classes' содержат базовые классы (один класс на файл).

Теперь вопрос касается / library / - они содержат функции, которые могут использоваться в любом классе, а иногда они используют какую-то другую функцию из другой библиотеки, а иногда им требуется доступ к некоторому базовому классу. Должен ли я просто написать их как функции, или сделать их статичными и обернуть в некоторый класс? В основном они мне нужны везде, но держите их организованно.

Ответы [ 2 ]

1 голос
/ 22 января 2009

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

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

0 голосов
/ 22 января 2009

Мое предложение - сначала подумать об архитектурных целях вашей CMS. Конечно, это будет на 100% вашим, но это не значит, что вы не будете страдать, если не начнете понимать, что подскажет, где и как, что это делает и как мне это получить отсюда.

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

Я не знаю, каким будет ваш архитектурный шаблон (я предполагаю, что это будет MVC, HMVC или PAC), но я думаю, что лучше сначала определить несколько базовых классов [/ core], которые заложат основы для инициализации приложения путем создания экземпляров некоторых библиотек [/ library], которые необходимы для анализа запроса входящих запросов и выполнения некоторых заданий по умолчанию перед инициализацией запрошенного контроллера [/ controllers].

Библиотеки должны иметь одну цель. Библиотека обработки сеансов должна обрабатывать только сеансы, маршрутизацию библиотеки маршрутизации и т. Д. Изначально вы можете создать свой базовый контроллер и базовую модель и поместить их в [/ core], а контроллеры [/ controllers] и модели [/ models] расширяют вашу базу контроллер и модель от [/core].

Как всегда, чем меньше ваши компоненты, тем лучше. Хорошее решение будет легким, небольшим и обширным по своему назначению. Если в будущем вы поменяете какие-либо дизайнерские идеи, вы сможете просто изменить основные классы и оказать огромное влияние на все приложение, не внося никаких дальнейших изменений в других местах.

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