Тонкие контроллеры, простые представления

Evg Evg 13 Мая 2022

В Интернете обычно демонстрируют следующий пример, чтобы показать «толстый» контроллер. Кстати, который по сравнению с некоторыми контроллерами на LibArea достаточно тонкий.

Вот пример:

class UserController
{
    /**
     * Действие контроллера
     * Возвращает приветствие юзеру с заданным ID
     */
    public function actionUserHello($userId)
    {
        // Получаем имя и фамилию юзера из модели юзера (База Данных)
        $user = UserModel::find($userId);

        // Шаблону представления нужно полное имя юзера - делаем его
        $name = $user->firstName.' '.$user->lastName;

        // Создаем представление с нужным шаблоном и полным именем
        $view = new View('hello', ['name' => $name]);

        // Рендерим (создаем образ) представление и возвращаем приветствие
        return $view->render();
    }
}

Что мы видим? Мы видим винегрет! В контроллере намешано все, что можно — и модель, и представление, и, собственно, сам контроллер!

Мы видим имена модели и шаблона, намертво зашитые в контроллер. Мы видим манипуляции с данными модели в контроллере — формирование полного имени из имени и фамилии.

И т.д.

Таких статей достаточно много:

Давайте посмотрим, что можно сделать. И шаблоны, введем некоторые вспомогательные функции (короткие), чтобы удобно было работать.

Релиз (фиксация измений перед этим обновлением выпущен), установка / обновление можно прочитать по этой ссылки:

https://libarea.ru/post/797/ustanovka-obnovlenie-skripta-libarea

Адрес архив заменен, убрано -test.

P.S. Если будут вопросы, пишите тут, с личку или в чате. Постараюсь помочь, если будут трудности с установкой или обновлением.

4 Ответа

  1. German German 13 Мая 2022 (ред.)

    Вы хотите добавить ещё один слой?

    1. Evg Evg 13 Мая 2022 (ред.)

      Да. Вообще посмотрим, 2 последние дня изучаю это.

  1. Adre Adre 14 Мая 2022 (ред.)

    Как успехи? Есть изменения?

    1. Evg Evg 14 Мая 2022 (ред.)

      Есть небольшие улучшения: упрощение поиска (переход на стеммер Snowball на PHP), расширения контроллеров, чтобы вынести проверку и сделать контроллеры тоньше и др.