ig0r74
@ig0r74
MODX-разработчик

Как правильно реализовать Laravel Service Provider?

Сейчас получаю 500 ошибку. Все-ли верно на данном этапе или это вызывает зацикливание? Как правильно передавать главный класс в подчиненные?

Создал сервис-провайдер:
class LaraShopServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->bind(LaraShop::class, function($app) {
            return new LaraShop($app->make(CartInterface::class), $app->make(OrderInterface::class));
        });

        $this->app->bind(CartInterface::class, function($app) {
            return new CartHandler($app->make(LaraShop::class));
        });

        $this->app->bind(OrderInterface::class, function($app) {
            return new OrderHandler($app->make(LaraShop::class));
        });
    }
}

Добавил его в config/app.php в секцию providers. Далее сокращенный код классов.
LaraShop:

class LaraShop
{
    public function __construct(CartInterface $cart, OrderInterface $order)
    {
        $this->cart = $cart;
        $this->order = $order;
    }


CartHandler:

class CartHandler implements CartInterface
{
    public function __construct(LaraShop $laraShop)
    {
        $this->larashop = $laraShop;
    }
}


OrderHandler:

class OrderHandler implements OrderInterface
{
    public function __construct(LaraShop $laraShop)
    {
        $this->larashop = $laraShop;
    }
}


Livewire component:

<?php

namespace App\Http\Livewire;

use App\Components\Larashop\LaraShop;
use Livewire\Component;

class MiniCart extends Component
{
    protected $listeners = ['cartChanged' => 'render'];

    public function mount(LaraShop $larashop)
    {
        $this->larashop = $larashop;
    }

    public function render()
    {
        // $cartHandler = new CartHandler;
        return view('livewire.mini-cart', $this->larashop->cart->get());
    }
}

  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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