Нужен совет по архитектуре приложения. Оптимально ли построено у меня сейчас? В какую сторону смотреть в дальнейшем? Что сделано не верно на ваш взгляд?
Из неучтенного сейчас - нет роутинга, url ссылается на конкретную страницу. Полное MVC пока не планировал. Стоит ли?
Нет вывода ошибок в какой-то автоматический баг-трекер. Ошибки и исключения обрабатываются вручную прогоном тестов. Есть ли аналоги PHPUnit или лучше учить его?
Структура проекта -
1. Каждая страница имеет основной скрипт, который проверяет имеет ли пользователь доступ к этой странице, подготавливает данные для наполнения страницы, рендерит свой шаблон twig .
2. Шаблон содержит разнообразные формы и элементы управления. Формы передаются AJAX'ом в скрипт, ответственный за обработку действий этой конкретной страницы (добавить комментарий, закрыть задачу, отредактировать ответ). Скрипт валидирует данные и права пользователя. Ответ скрипта приходит в JSON, разбирается - в зависимости от результата выдаем уведомление об успехе/неудаче.
3. Скрипт обработки в зависимости от action'а запроса дергает методы соответствующих классов, выбрасывает исключения в случае ошибки, в обработки исключения откатывается транзакция (если были запросы на добавление/изменение), формируется сообщение об ошибке. Ответ отдается в JSON
4. Классы по сущностям - пользователь, задача, оборудование и т.д.. В методах содержатся вычисления и запросы к БД (PDO). Геттеры, сеттеры напрямую не используются - не требуется обновление какого-то одного параметра, обновление идет сразу по группам параметров. Там где нужно изменение единичных полей - написаны методы с соответствующими проверками.
Если есть какая-то интересная на ваш взгляд литература или статьи - буду признателен. Заранее спасибо!
Я бы все же рекомендовала посмотреть в сторону MVC и попробовать построить архитектуру в соответствие с этой парадигмой. Посмотрите как устроены некоторые фреймворки, например Laravel. Также можно посмотреть на Slim3, там нет жесткой структуры как в больших фреймворках, и можно самому создавать архитектуру, используя документацию.