NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

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

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

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ádyAkciaSignatúraSpustí
Reviews::create($data) — and for()->by()->create()CreateReviewexecute(CreateReviewData $data): ReviewReviewCreated
Reviews::approve($review)ApproveReviewexecute(Review $review): ReviewReviewApproved
Reviews::reject($review, $reason)RejectReviewexecute(Review $review, ?string $reason = null): ReviewReviewRejected
Reviews::update($review, $data)UpdateReviewexecute(Review $review, UpdateReviewData $data): ReviewReviewUpdated
Reviews::delete($review)DeleteReviewexecute(Review $review): voidReviewDeleted
Reviews::respond($review, $author, $content, $title)RespondToReviewexecute(Review $parent, Model $author, string $content, ?string $title = null): ReviewReviewResponded
Reviews::vote($review, $voter, $helpful)VoteOnReviewexecute(Review $review, Model $voter, bool $helpful = true): ReviewVoteReviewVoted
Reviews::removeVote($review, $voter)RemoveReviewVoteexecute(Review $review, Model $voter): boolReviewVoteRemoved
Reviews::verify($review) / unverify($review)MarkReviewVerifiedexecute(Review $review, bool $verified = true): ReviewReviewVerified
  • 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) 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

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

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.