Организация index.php в проекте? При использовании стороннего роутера, проект в index.php начинается так:use Klein\Klein; require_once __DIR__ . '/vendor/autoload.php'; $klein = new Klein(); $klein->respond('POST', '/packages', function (Request $request) { $server = new Server(); return $server->serve($request->paramsPost()->all()); }); $klein->dispatch(); 1. Нужно создать сессию даже для неавторизованного пользователя и загрузить некоторые настройки проекта. Где лучше это сделать? Корректно ли вызвать класс сразу после создания роутера:$klein = new Klein(); $session = new Session(); $settings = new Settings(); 2. Нигде не проверяется сущеcтвование класса перед созданием. Может класса Server не существует. Будет ошибка. Можно ли сделать так:function checkClass($class){ if (class_exists($class)) { return new $class; } else { ... } } $klein->respond('GET', '/[:controller]', function ($request) { $obj = checkClass(ucfirst($request->controller).'Controller'); $act = $obj->runDefault(); return $act; }); Здесь https://github.com/nahidex/Employee-Leave-Manageme... вообще зафигачили все классы сразу:use Klein\Klein as Route; $bag = new Pimple\Container; // container $route = new Route(); $home = new Home($bag); //controller $dashboard = new Dashboard($bag); // controller $user = new User(); $role = new Role(); $leave = new LeaveController($bag); А если у меня их 30 штук и не все понадобятся, я так и должен портянку такую писать?
Лучше создать сессию и загрузить настройки проекта до создания роутера. Это может быть сделано, например, в самом начале index.php, перед созданием экземпляров классов:session_start(); $session = new Session(); $settings = new Settings(); $klein = new Klein();Да, в вашем коде можно добавить проверку на существование класса перед созданием экземпляра. Однако, это может привести к повторяющемуся коду в каждом обработчике маршрута. Вместо этого можно использовать зависимость внедрения контейнера (DI Container), который будет автоматически создавать экземпляры классов в зависимости от их наличия. Например, вы можете использовать библиотеку Pimple, как показано в примере с Employee Leave Management.
Если у вас большое количество классов и не все из них используются в каждом запросе, DI Container может быть хорошим решением, чтобы избежать избыточного кода и упростить управление зависимостями.
$session = new Session();
$settings = new Settings();
$klein = new Klein();Да, в вашем коде можно добавить проверку на существование класса перед созданием экземпляра. Однако, это может привести к повторяющемуся коду в каждом обработчике маршрута. Вместо этого можно использовать зависимость внедрения контейнера (DI Container), который будет автоматически создавать экземпляры классов в зависимости от их наличия. Например, вы можете использовать библиотеку Pimple, как показано в примере с Employee Leave Management.
Если у вас большое количество классов и не все из них используются в каждом запросе, DI Container может быть хорошим решением, чтобы избежать избыточного кода и упростить управление зависимостями.