Я кодировал в течение многих лет и оказался в точке разочарования. Я работаю над новым веб-сервисом, который также имеет пользовательский интерфейс, и он будет разработан с нуля. Он будет использовать некоторые компоненты с открытым исходным кодом, но в основном это новая вещь сама по себе.
Но вот моя проблема. Создание такой системы означает создание всех этих компонентов:
- PHP-бэкэнд
- HTML-представления
- CSS-стили
- Интерфейс JavaScript
- Асинхронные соединения AJAX
Я хочу, чтобы все они следовали одному и тому же «шаблону» таким образом, чтобы модуль в системе состоял из папки или набора файлов, которые включают все эти компоненты в этом модуле.
Но мне трудно получить архитектуру так, чтобы она мне нравилась. Вот что у меня есть до сих пор:
- Вся основная система более-менее написана на процедурном PHP. Это решает URL-адрес запроса, занимается кэшированием, ведением журнала и отладкой, а также загружает другие компоненты.
- PHP при создании страницы загружает в модуль файлы javascript, файлы CSS, файлы HTML и другие компоненты на основе текущего модуля. Это означает, что каждый модуль является настолько легким, насколько это возможно, и в то же время может быть расширен в соответствии с текущими потребностями модулей.
- Система также включает компоненты объектов ООП (такие как «пользователи» или другие типы классов), которые можно использовать в масштабах всей системы.
- Система построена на принципах MVC, но без ООП.
Но я действительно чувствую себя грязным из-за того, что построил основную систему процедурным способом. Сначала я начал писать его в ООП, но вскоре обнаружил, что у меня начинаются головные боли из-за необходимости подгонять все под одну и ту же систему. Это было ООП, но оно было тесно связано, что мне не нравилось, поскольку оно было написано в стиле ООП, компоненты были на самом деле не такими независимыми или были просто хлопотами в управлении.
Существуют ли какие-либо шаблоны или руководства, которым я мог бы следовать, чтобы получить лучший результат? Что мне нравится в текущей системе, так это то, что я могу вызывать что угодно, предварительный рендеринг PHP или HTML-представления, стили CSS, дополнительные функции Javascript и связь AJAX по запросу, сохраняя удивительно маленькую опорную поверхность, но она кажется грязной. Я даже использую глобальный для подключения к основной базе данных (хотя это глобальный объект).
Есть идеи? Это не было бы проблемой, если бы это был только один язык, но попытка заставить все работать вместе — это немного головная боль.
Спасибо!