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


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

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

Похожие вопросы