---
title: "DI a akcie — Reviews for Laravel | Roundly"
description: "Namiesto fasády injektujte ReviewsManager alebo spustite akciu za každou operáciou — CreateReview, ApproveReview, VoteOnReview a ďalšie."
url: https://roundly-consulting.com/sk/open-source/navody/reviews-for-laravel/bez-fasady
language: sk
---

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

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

# DI a akcie

Fasáda je odporúčaná predvoľba, nie jediný vstup. Tri rovnocenné vstupné body spúšťajú ten istý kód:

- Fasáda Reviews — najkratší zápis, ktorý používa celá táto dokumentácia.
- Manažér — RoundlyConsulting\\Reviews\\ReviewsManager, Macroable singleton v kontajneri a koreň fasády. Injektujte ho: rovnaké API, explicitná závislosť a žiadne statické volania.
- Akcie — každá plochá operácia si z kontajnera vezme jednu malú triedu akcie. Zavolajte na nej execute() a recenzie zapojíte do vlastných akcií, jobov a príkazov.

## Injektovanie manažéra

```php
use RoundlyConsulting\Reviews\ReviewsManager;

final class ProductReviewController
{
    public function __construct(private ReviewsManager $reviews) {}

    public function store(Product $product, Request $request): Review
    {
        return $this->reviews->for($product)->by($request->user())->rating(5)->create();
    }
}
```

Reviews::fake() nahradí aj injektovanú inštanciu — ReviewsFake dedí z ReviewsManager, takže trieda s type-hintom na manažér dostane v testoch zaznamenávajúci fake.

## Volanie akcie

```php
use RoundlyConsulting\Reviews\Actions\CreateReview;
use RoundlyConsulting\Reviews\Actions\MarkReviewVerified;
use RoundlyConsulting\Reviews\DataTransferObjects\CreateReviewData;

$review = app(CreateReview::class)->execute(new CreateReviewData(
    author: $user,
    reviewable: $restaurant,
    content: 'Great place',
    title: 'Loved it',
    rating: 5,
    meta: collect(['visit' => 'dinner']),
));

app(MarkReviewVerified::class)->execute($review, verified: true);
```

## Metóda fasády → akcia

| Metóda fasády | Akcia | Signatúra | Spustí |
| --- | --- | --- | --- |
| `Reviews::create($data) — and for()->by()->create()` | `CreateReview` | `execute(CreateReviewData $data): Review` | `ReviewCreated` |
| `Reviews::approve($review)` | `ApproveReview` | `execute(Review $review): Review` | `ReviewApproved` |
| `Reviews::reject($review, $reason)` | `RejectReview` | `execute(Review $review, ?string $reason = null): Review` | `ReviewRejected` |
| `Reviews::update($review, $data)` | `UpdateReview` | `execute(Review $review, UpdateReviewData $data): Review` | `ReviewUpdated` |
| `Reviews::delete($review)` | `DeleteReview` | `execute(Review $review): void` | `ReviewDeleted` |
| `Reviews::respond($review, $author, $content, $title)` | `RespondToReview` | `execute(Review $parent, Model $author, string $content, ?string $title = null): Review` | `ReviewResponded` |
| `Reviews::vote($review, $voter, $helpful)` | `VoteOnReview` | `execute(Review $review, Model $voter, bool $helpful = true): ReviewVote` | `ReviewVoted` |
| `Reviews::removeVote($review, $voter)` | `RemoveReviewVote` | `execute(Review $review, Model $voter): bool` | `ReviewVoteRemoved` |
| `Reviews::verify($review) / unverify($review)` | `MarkReviewVerified` | `execute(Review $review, bool $verified = true): Review` | `ReviewVerified` |

- CreateReviewData nesie author, reviewable, content, title, rating, meta, approved, verified a photos; UpdateReviewData nesie title, content, rating, meta a verified, pričom null znamená „nemeniť“.
- ValidatesRating (kontrola rozsahu hodnotenia), ValidatesReviewContent (kontrola, že recenzia má hodnotenie alebo text) a RecountReviewVotes (denormalizované počty hlasov) sú @internal stavebné bloky týchto akcií — nie sú určené na použitie v aplikácii.
- Akcia zavolaná priamo obchádza manažér, preto ju Reviews::fake() nezaznamená.

## 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/reviews-for-laravel.md)
