@edvardpotter

Как использовать контроллеры и модели в фреймворках?

Пробую сейчас Slim фреймворк, как там использовать модели? Как вообще это устроенно в фреймворках?

1) Для меня непонятна такая конструкция:
$app->get('/hello/{name}', function (Request $request, Response $response) {
    $name = $request->getAttribute('name');
    $response->getBody()->write("Hello, $name");

    return $response;
});

а именно function (Request $request, Response $response)

2)Не могу до конца понять как использовать модели, где они хранятся и как их использовать.
  • Вопрос задан
  • 743 просмотра
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
модель - это очень абстрактное слово. Заглянем в словарь:

Модель - представление предмета, системы...


Итого - "моделью" в контексте MV* является... модель вашего приложения, то есть что собственно приложение делает. Главное не заблуждаться что это "способ доступа к данным", там по сути все что относится к обработке данных. То есть контроллеры максимум могут просить модель что-то сделать или дать представление каких-то данных, что бы контроллер сформировал из этого view (HTTP ответ в контексте PHP фреймворка).

Есть еще такая штука - Action-Domain-Responder называется, там чуть меньше "абстрактных слов" но суть примерно та же что и у MVC.

Но вернемся к вопросу

Не могу до конца понять как использовать модели, где они хранятся.


Это вам решать. Slim - это очень простой HTTP фреймворк. Его задача - дать вам контроллеры, а модель - ваша задача ее реализовать. Вы можете вооружиться контейнером зависимостей или сервис локатором даже, и дергать нужные сервисы, которые уже будут делать дела.

Суть всего этого - абстрагировать "модель" то есть ваше приложения от HTTP. Что бы потом можно было реюзать код вашего приложения с другими интерфейсами (как правило консольными командами или очередями).

Ссылку на "зачем нужна инъекция зависимостей" вам уже привели, я лишь добавлю более-менее полезное чтиво на тему разделения ответственноси и слоеных архитектур в slim: codereview.stackexchange.com/questions/93914/slim-...
Ответ написан
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Ваш ответ на вопрос

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

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