Size: a a a

Laravel для начинающих

2021 March 04

SC

Sergey Chizhik in Laravel для начинающих
У тебя один вызов static, один нет
источник

Д

Діма in Laravel для начинающих
источник

Д

Діма in Laravel для начинающих
Ну класс тот что в вендоре Cart но по дефолту имеет методы статические
вот этот пакет
https://packagist.org/packages/bumbummen99/shoppingcart
источник

Д

Діма in Laravel для начинающих
И я думаю чтобы не менять там все
Cart::add()
на (new Cart)->add()
сделать

или он как то по другому работает? не через фасады?
источник

АП

Андрей Пасечник... in Laravel для начинающих
Діма
Ну класс тот что в вендоре Cart но по дефолту имеет методы статические
вот этот пакет
https://packagist.org/packages/bumbummen99/shoppingcart
У меня на проекте это говно стоит. Боже, Убейте.
источник

Д

Діма in Laravel для начинающих
Андрей Пасечник
У меня на проекте это говно стоит. Боже, Убейте.
ну хз, можно и самому написать но как то на двух проектах нормально работал)
решил еще тут поставить но немного переопределить методы)
источник

SC

Sergey Chizhik in Laravel для начинающих
Діма
И я думаю чтобы не менять там все
Cart::add()
на (new Cart)->add()
сделать

или он как то по другому работает? не через фасады?
Во-первых, есть фасад Cart, есть класс Cart. Не путай.
Во-вторых, есть механизм DI для прокидывания Cart в любые места, например контроллеры.
источник

АП

Андрей Пасечник... in Laravel для начинающих
Діма
ну хз, можно и самому написать но как то на двух проектах нормально работал)
решил еще тут поставить но немного переопределить методы)
В senrty периодически какие то ошибки падают оттуда, даже вычислить че не так невозможно.
источник

Д

Діма in Laravel для начинающих
Sergey Chizhik
Во-первых, есть фасад Cart, есть класс Cart. Не путай.
Во-вторых, есть механизм DI для прокидывания Cart в любые места, например контроллеры.
Тоесть через __construct() ?
источник

SC

Sergey Chizhik in Laravel для начинающих
Самый простой вариант используя DI был бы переопределить класс, а не фасад Cart, в нём сделать изменения и прокинуть его
источник

SC

Sergey Chizhik in Laravel для начинающих
Діма
Тоесть через __construct() ?
DI очень условно, это когда приложение вызывает __construct  за тебя, подкидывая ему то от чего он зависит
источник

Д

Діма in Laravel для начинающих
Sergey Chizhik
Самый простой вариант используя DI был бы переопределить класс, а не фасад Cart, в нём сделать изменения и прокинуть его
Понял. Хорошо. Я запутался просто с теми фасадами.
Уже понял как делать.
Спасибо большое за обьяснение.
источник

SC

Sergey Chizhik in Laravel для начинающих
Если прям нужны фасады, то нужно сделать свой сервис-провайдер, в нём перебить алиас cart на свой класс
источник

Д

Діма in Laravel для начинающих
Sergey Chizhik
Если прям нужны фасады, то нужно сделать свой сервис-провайдер, в нём перебить алиас cart на свой класс
Вот я пробовал и что-то у меня не завелось.
По сути проект еще на старте поэтому не будет проблеммы если фасадов не будет. Другое дело если бы уже много логики было написано, то тогда нужно бы было перебивать.

Не буду искать легких путей) Вернее сначала сделаю без фасадов чтобы убедиться что работает.
а потом буду колдовать с фасадами.
нужно будет доку еще почитать а то я не очень понимаю как они работают.
Могу конечно в провайдере сделать
$this->app->bind('Cart', Cart::class);
но что-то там у меня не работало ( методы родителя не видело )
но нужно еще раз будет проверить
источник

SC

Sergey Chizhik in Laravel для начинающих
Діма
Вот я пробовал и что-то у меня не завелось.
По сути проект еще на старте поэтому не будет проблеммы если фасадов не будет. Другое дело если бы уже много логики было написано, то тогда нужно бы было перебивать.

Не буду искать легких путей) Вернее сначала сделаю без фасадов чтобы убедиться что работает.
а потом буду колдовать с фасадами.
нужно будет доку еще почитать а то я не очень понимаю как они работают.
Могу конечно в провайдере сделать
$this->app->bind('Cart', Cart::class);
но что-то там у меня не работало ( методы родителя не видело )
но нужно еще раз будет проверить
Блядь
источник

SC

Sergey Chizhik in Laravel для начинающих
Имя класса делай через ::class, а не в кавычках
источник

SC

Sergey Chizhik in Laravel для начинающих
И вообще bind делать не надо
источник

SC

Sergey Chizhik in Laravel для начинающих
У тебя DI сам поймёт, что твой класс наследник вендоровского, заглянет ему в конструктор и точно так же его создаст
источник

SC

Sergey Chizhik in Laravel для начинающих
А вот что бы фасад завёлся с кастомным классом, надо $this->app->alias('cart', MyAwesomeCart::class);
источник

Д

Діма in Laravel для начинающих
Понял. Спасибо.
источник