---
title: "DI a akcie — Shops for Laravel | Roundly"
description: "Injektujte ShopsManager a získajte to isté API bez statických volaní, alebo spúšťajte verejné triedy akcií v jobách a vlastných akciách."
url: https://roundly-consulting.com/sk/open-source/navody/shops-for-laravel/bez-fasady
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Shops for Laravel](https://roundly-consulting.com/sk/open-source/navody/shops-for-laravel.md)

# DI a akcie

Balík ponúka tri rovnocenné vstupné body a vyberáte si pri každom volaní. Fasáda Shops je najkratšia a odporúčaná. RoundlyConsulting\\Shops\\ShopsManager je koreň fasády — singleton v kontajneri, ktorý si injektujete cez konštruktor a dostanete to isté API ako explicitnú závislosť bez statických volaní. A každá operácia je samostatná trieda akcie s metódou execute(), ktorú zapojíte do vlastných akcií, jobov vo fronte či príkazov.

## Injektovaný manažér

Každé volanie manažéra si akciu vyžiada z kontajnera, takže vaše vlastné väzby platia:

```php
use Illuminate\Http\Request;
use RoundlyConsulting\Shops\Cart\Cart;
use RoundlyConsulting\Shops\Orders\DataTransferObjects\PlaceOrderData;
use RoundlyConsulting\Shops\Orders\Order;
use RoundlyConsulting\Shops\ShopsManager;

final class CheckoutController
{
    public function __construct(private ShopsManager $shops) {}

    public function __invoke(Request $request, Cart $cart): Order
    {
        return $this->shops->cart($cart)->checkout(PlaceOrderData::fromAddressBook($request->user()));
    }
}
```

## Priame volanie akcií

```php
use RoundlyConsulting\Shops\Actions\Cart\AddToCartAction;
use RoundlyConsulting\Shops\Actions\Inventory\AdjustStockAction;
use RoundlyConsulting\Shops\Actions\Orders\PlaceOrderAction;
use RoundlyConsulting\Shops\Inventory\Enums\StockReason;
use RoundlyConsulting\Shops\Orders\DataTransferObjects\PlaceOrderData;

app(AddToCartAction::class)->execute($cart, $variant, 2);
app(PlaceOrderAction::class)->execute($cart, new PlaceOrderData);
app(AdjustStockAction::class)->execute($variant, 10, StockReason::Received, $purchaseOrder, 'PO-17');
```

## Metóda fasády → akcia

| Fasáda | Akcia |
| --- | --- |
| `cart()->add()` | `Actions\Cart\AddToCartAction` |
| `cart()->update()` | `Actions\Cart\UpdateCartItemAction` |
| `cart()->remove()` | `Actions\Cart\RemoveFromCartAction` |
| `cart()->clear()` | `Actions\Cart\ClearCartAction` |
| `cart()->checkout()` | `Actions\Orders\PlaceOrderAction` |
| `order()->transition() / cancel() / refund() / fulfil()` | `Actions\Orders\TransitionOrderStatusAction` |
| `order()->charge()` | `Actions\Orders\ChargeOrderAction` |
| `order()->quoteShipping()` | `Actions\Orders\QuoteShippingAction` |
| `inventory()->receive() / returned() / adjust()` | `Actions\Inventory\AdjustStockAction` |

- Shops::fake() dosadí ShopsFake, podtyp ShopsManager, takže fake dostanú aj manažéry injektované cez konštruktor — a rovnako pomocné metódy modelov, ktoré manažér volajú.
- Akcia, ktorú zavoláte priamo, manažér obíde, takže ju fake nezaznamená.
- Vytvorenie objednávky prijíma DTO PlaceOrderData — poskladajte ho ručne alebo cez PlaceOrderData::fromAddressBook($customer).
- AddOrderItemAction, ReserveStockAction a ReleaseStockAction sú @internal — stavebné bloky vytvorenia objednávky a prechodov na zrušenie a vybavenie, nie pre vašu aplikáciu.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/shops-for-laravel.md)
