Замечательная статья, большое спасибо! Плохо понял второй шаг, точнее то что касается сервисных классов. Можете пояснить концепцию сервисных классов? В чем необходимость выносить логику именно в них и какую именно логику надо выносить в них, а не в модель? Я обычно стремлюсь помещать всю логику обработки данных в модель, то есть, например запрос на добавление файла: после валидации контроллер дергает метод модели отвечающий за создание новой сущности и передает в нее нужную информацию из реквеста. Модель же уже дергает свои методы, например для ресайза изображения и сохранения нужным образом файла, пишет запись в бд и тд. Можете посоветовать структуру файлов и директорий проекта? Я по этому поводу нахожусь в большом замешательстве и в основном сваливаю все что отвечает за логику работы с данными в файлы в app\Models\