Я тут застрял в MVC и надолго, терпение немножко не хватает. Прошелся по очень Важным вещам, то есть, как пишется модель, контроллер и т.д.. Но как сяду писать простенький интернет-магазин, то сразу теряюсь, что писать, где писать и так уже 2 месяца. Понимание есть, но по реализациям 0. Если есть хорошие ресурсы, которых я не заметил, то дайте пожалуйста!
И получится ли, если приступлю к фрейморку, например YII2, понять, что где находится. Реально немножко срываюсь(
В основном, MVC бывает 2 видов:
Очень много споров, что есть правильно, а что нет. Итог этих споров - несколько стандартов разработки по паттерну MVC. Полагаю, что ты уже прочел это и знаешь основы MVC, хоть и без практики. Если перейти к проекту с интернет-магазином, то у нас есть следующие модели:
Для наглядности, берем за основу самый базовый интернет-магазин с одним уровнем вложенности. Модель является "поставщиком" данных для контроллеров, она никак не связана с пользователями и её задача лишь управлять данными. У каждой модели есть связи (категория имеет много товаров, товар имеет одну категорию, заказ имеет несколько товаров и одного клиента, клиент имеет много заказов, товар может принадлежать нескольким заказам), наша цель - написать все эти связи в модель. К примеру, возьмем модель заказа (пишу так, как пишется на laravel, но для yii примерно так же делается):
class Order extends Model
{
//Получаем клиента
public function client()
{
return $this->belongsTo('App\Client');
}
//Получаем товары
public function client()
{
return $this->hasMany('App\Products');
}
}
Зачем это надо? Для того, чтобы придерживаться принципа DRY и не утолщать контроллер. Теперь представим метод контроллера, который обрабатывает запрос на получение заказа по ID:
...controller
public function show($orderId)
{
$order = Order::findOrFail($orderId);
return view('view.name', $order);
}
Таким образом, хелпер view() рендерит пользователю view, при этом передавая туда переменную $order.
Различные вопросы защиты данных и т.д. выходят из рамок MVC и реализуются в каждом фреймворке по-разному.
Надеюсь, что это хоть немного тебе помогло :)
Можешь пробовать вот эти уроки:
Но а лучше, выучить Yii2, и пробовать уже на нём что-то делать. Паттерны понять иногда трудно...
Да, если начнёте изучать MVC вместе с фреймворком - точно не прогадаете. Я бы вам посоветовал обратить внимание на фреймворки Laravel, либо Symfony. Yii2 - хороший инструмент, но он во-первых на данный момент развивается значительно слабее первых двух, во вторых он в некоторых случаях прививает плохие практики разработки.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости