LINUX.ORG.RU

MVC несколько вопросов по реализации в PHP

 ,


0

1

Пишу свой велосипед для понимания mvc.

  1. Какая должна быть структура проекта(логика расположения файлов)?
  2. Как должны именоваться URL, насколько длинными могут быть, есть определенный стандарт?
  3. В контроллере нужно разобрать запрос или в модели(что пришло в GET или POST)?
  4. Как именовать методы контроллера и модели? Вот к примеру, создается новый пользователь (/create_user) В контроллере вызываю метод create_user, передаю имя пользователя и др. инфу в модель в метод create_user(имя такое же?).
  5. Контроллер может вызывать методы у разных моделей?
  6. Чем еще занимается контроллер, кроме как разбирает запрос(если я правильно понял), вызывает методы модели и отдает результаты из модели в шаблон?

  1. Зависит от тараканов в голове. Лично я делаю так: модели в одну директорию, представления — в другую, контроллеры — в третью, и общий управляющий файл. Кое-кто делит по назначению: модель, представление и контроллер в одной папке, и так — для каждого объекта бизнес-модели.
  2. Как захотите, но приемлимым вариантом считаются две-три поддиректории плюс GET-запросы (тоже две-три штуки) из-за приемлимой читабельности. О всяких «реферальных ссылках» длинной в 500 символов мы деликатно умалчиваем, это не наше.
  3. Можно. А можно и в отдельный метод модели передавать.
  4. Как хотите. Но лучше следовать гайдлайнам по именованию методов, работодатели это любят.
  5. Да, если метод публичен.
  6. Вызывает методы представлений, которые уже и отдают данные. Всё, больше он ничем не занимается.

Это всё из моего личного опыта, когда писал курсовую на последнем курсе (год назад).

Korchevatel ★★★★ ()
  1. PSR-4
  2. Как угодно
  3. В контроллере. Модель должна знать только про себя, всё остальное ей до лампочки
  4. Как угодно, имя может быть другое и мапиться через конфиг
  5. Разумеется
  6. Больше ничем, потому что ты так обще это всё обозвал, что под «вызов методов модели» можно и валидацию и авторизацию подвести и т.п. вещи.
no-such-file ★★★★★ ()

Какая должна быть структура проекта(логика расположения файлов)?

Нпаример, https://www.tutorialspoint.com/ruby-on-rails/rails-directory-structure.htm

Как должны именоваться URL, насколько длинными могут быть, есть определенный стандарт?

Называться коротко, но понятно. Например /shop/item/12

В контроллере нужно разобрать запрос или в модели(что пришло в GET или POST)?

Контролер должен как можно лаконичнее разобрать запрос и отдать ответ. Например [code=php] public function viewItem(Item $item) { return $this->render(‘/shop/item.html.twig’, [‘item’ => $item]); } [/code]

Как именовать методы контроллера и модели? Вот к примеру, создается новый пользователь (/create_user) В контроллере вызываю метод create_user, передаю имя пользователя и др. инфу в модель в метод create_user(имя такое же?).

Коротко и понятно. Советую camelCase.

Контроллер может вызывать методы у разных моделей?

Ровно столько, сколько надо. Но чем меньше, тем лучше.

Чем еще занимается контроллер, кроме как разбирает запрос(если я правильно понял), вызывает методы модели и отдает результаты из модели в шаблон?

Может еще проверить доступ, обработать исключения, залогировать что-то, но чем меньше делает, тем лучше. Он - критический важная часть цепи, которая соединяет веб фигню с твоей фигней и чем она проще, тем надежнее.

anonymous ()