Я создаю свою персональную CMS и нуждаюсь в вашем совете по организации основных функций и занятий. У меня есть папки:
/shared
/classes
DB.php
Session.php
Config.php
...
/libraries
Arrays.php
DateTime.php
Email.php
...
Файлы в папке "классы" содержат основные классы (по одному классу на файл).
Теперь вопрос о / библиотеках / - они содержат функции, которые могут использоваться в любом классе, а иногда они используют какую-то другую функцию из другой библиотеки, а иногда им нужен доступ к какому-то базовому классу. Должен ли я просто написать их как функции или сделать их статическими и обернуть в какой-то класс? В основном они мне нужны везде, но держите их организованными.






Should i just write them as functions, or make them static and wrap in some class? Basically i need them everywhere, but keep them organized.
Вы еще не изучили пространства имен? Лучше всего было бы заключить все ваши функции в пространство имен.
Я предлагаю сначала подумать об архитектурных целях вашей CMS. Конечно, он будет на 100% вашим, но это не значит, что вы не будете страдать от того, что не поймете, что зацепило, где и как, что это делает и как мне это отсюда достать.
Вот почему я определенно не предлагаю вам иметь библиотеки, вызывающие библиотеки. С моей точки зрения, ни один из ваших классов не должен зависеть от чего-либо еще, кроме нескольких первых основных классов в потоке вашего приложения, поскольку вы хотите распределить работу в каких-то других автономных классах с единственной целью. Вы должны стремиться к сингулярности и атомарности с вашими основными классами.
Я не знаю, каким будет ваш архитектурный шаблон (я предполагаю, что это будет MVC, HMVC или PAC), но я думаю, что лучше сначала определить несколько основных классов [/ core], которые заложат основы для инициализации приложение путем создания экземпляров некоторых библиотек [/ library], которые необходимы для анализа запроса входящих запросов и выполнения некоторых задач по умолчанию перед инициализацией запрошенного контроллера [/ controllers].
Библиотеки должны иметь единственную цель. Библиотека обработки сеансов должна обрабатывать исключительно сеансы, маршрутизацию библиотеки маршрутизации и т. д. Первоначально вы можете создать свой базовый контроллер и базовую модель и поместить их в [/ core], а контроллеры [/ controllers] и модели [/ models] расширить вашу базу контроллер и модель из [/ core].
Как всегда, чем меньше взаимосвязанных компонентов, тем лучше. Хорошее решение будет легким, компактным и обширным по своему назначению. Если вы измените какие-либо дизайнерские идеи в будущем, это поможет вам просто изменить основные классы и оказать огромное влияние на все приложение без необходимости вносить какие-либо дальнейшие изменения в других местах.