Делаю сайт-магазин, одностраничник. Надо сделать без сторонних фреймворков. Получилась такая архитектура:
папки
controllers
models
lib
static
views
Классы загружаются через автозагрузку по namespace
Вход через index.php, запрос обрабатывает
роутер, который загружает соответствующий запросу контроллер, например, controllers/main.php, в котором для простоты не класс, а несколько анонимных функций типа
$router->map('GET','/',function() { ... });
$router->map('GET','/test',function() { ... });
(второй аргумент тут - это не абсолютный путь, а относительно текущего контроллера)
или правильней это называть middlewares?
в функциях идет обращение к моделям, например
$items = App\Models\Items::getAll();
модели - классы наследующиеся от класса Model, со статическими методами, содержащими запросы через mysqli или pdo
рендерится это все просто через
require "../views/index.php"
а корзина хранится в localStorage.
Вопрос: насколько правильно так делать, что можно улучшить?