ubernoob
@ubernoob

Организация 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 штук и не все понадобятся, я так и должен портянку такую писать?
  • Вопрос задан
  • 588 просмотров
Пригласить эксперта
Ответы на вопрос 2
Minifets
@Minifets
Hello world!!!
А если у меня их 30 штук и не все понадобятся, я так и должен портянку такую писать?


Да. Объекты сами себя не создадут.
Ответ написан
@MadridianFox
Web-программист, многостаночник
Да, вы можете проверить существование класса. А если его нет то что? Будете использовать другой класс? Наверное нет, потому что в 99% случаев такого в нормальной ситуации не бывает. Нет класса - фатал эррор. Всё-равно продолжать бессмысленно. Ошибка сама запишется в лог, остаётся только настроить веб-сервер чтобы на 500 ошибку выдавал станицу с вашим стилем.
Всё остальное решается использованием системы внедрения зависимостей.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
24 апр. 2024, в 22:11
2000 руб./за проект
24 апр. 2024, в 22:00
500 руб./в час
24 апр. 2024, в 21:49
10000 руб./за проект