Laravel 2 способа, написать одно и тоже?

День добрый! Ребят, подскажите в чем тут разница? и в каких ситуация, какой способ предпочтительнее использовать, есть ли вообще разница?

Вариант 1
class ControllerNomenclature extends Controller
{
    private $products;

    public function __construct(ModelProducts $products)
    {
        parent::__construct();
        $this->products = $products;
    }
    
    public function index()
    {
        return $this->products->getProducts();
    }
}


Вариант 2

class ControllerNomenclature extends Controller
{
    public function index(ModelProducts $products)
    {
        return $this->products->getProducts();
    }
}


Насколько я понимаю, то в первом случае, при инициализации объекта, я буду обязан передать в него параметры иначе - ошибка. А во втором случае, я буду обязан передать параметры в метод index. Но все еще, смогу, спокойно инициализировать объект.

Какая еще принципиальная разница, здесь есть? В каких случаях использовать тот или иной подход, возможно, есть конкретные рекомендации?
Большое спасибо за ваши ответы! Уж больно, сильно я хочу превратиться из домохозяйки в хотя бы джуниор php)
  • Вопрос задан
  • 672 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Arik
Вроде как:
1. Все методы/экшны зависят от этих данных и будет запросы или еще что
2. Только index зависит от этих данных и только для него будет запрос

в ларе нет метода инит?)
Ответ написан
@Kostik_1993
Web Developer
Все что пишут чуваки выше это все не то. Принципиальная разница это то что в разные методы автоматически передаются уже полученные объекты, для index это коллекция, а в методы show create delete edit update передаётся один обьект класса. Тоесть вам не нужно выполнять запрос на получение данных, они уже будут переданы автоматически при использовании route model binding
В первом случае у вас будет передан просто обьект без данных, заварочным придётся делать самому в методе
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы