Создание персональной CMS - классы и библиотеки

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

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

Файлы в папке "классы" содержат основные классы (по одному классу на файл).

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
0
1 003
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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].

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

Другие вопросы по теме