Сейчас получаю 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());
}
}