Fasáda Reviews
Všetko, čo balík robí, je na jedno volanie na fasáde Reviews — RoundlyConsulting\Reviews\Facades\Reviews, zaregistrovanej aj ako globálny alias Reviews:
use RoundlyConsulting\Reviews\DataTransferObjects\CreateReviewData;
use RoundlyConsulting\Reviews\DataTransferObjects\UpdateReviewData;
use RoundlyConsulting\Reviews\Facades\Reviews;
// One subject: author a review, read its aggregates, list its reviews
Reviews::for($product)->by($user)->rating(5)->content('Great')->create();
Reviews::for($product)->summary(); // RatingSummary DTO
Reviews::for($product)->average(); // ?float
Reviews::for($product)->count(); // int (approved)
Reviews::for($product)->distribution(); // [5 => 120, 4 => 80, ...]
Reviews::for($product)->photoCount(); // photos on approved reviews
Reviews::for($product)->reviewsWithPhotos(); // approved reviews that carry a photo
Reviews::for($product)->query()->approved()->mostHelpful()->paginate();
// Every review (swap-aware) — e.g. the moderation queue
Reviews::query()->pending()->latestFirst()->paginate();
// Act on one review
Reviews::create(new CreateReviewData(author: $user, reviewable: $product, rating: 5));
Reviews::approve($review);
Reviews::reject($review, 'Spam');
Reviews::update($review, new UpdateReviewData(content: 'Edited'));
Reviews::delete($review);
Reviews::respond($review, $owner, 'Thanks!');
Reviews::vote($review, $user, helpful: true);
Reviews::removeVote($review, $user);
Reviews::verify($review);
Reviews::unverify($review);
// Tests
$fake = Reviews::fake();Metódy
| Metóda | Vráti | Urobí |
|---|---|---|
for(Model $reviewable) | ReviewableScope | Obmedzí nasledujúce volania na jeden predmet. |
for(…)->by(Model $author) | PendingReview | Začne recenziu predmetu; ukončíte ju cez ->create(). |
for(…)->summary() / average() / count() / distribution() / photoCount() / reviewsWithPhotos() | aggregates | Len schválené recenzie predmetu najvyššej úrovne. |
for(…)->query() | Builder<Review> | Recenzie predmetu najvyššej úrovne v každom stave (odpovede cez $review->responses). |
query() | Builder<Review> | Každá recenzia na nastavenom modeli — každý predmet, stav aj odpoveď. |
create(CreateReviewData $data) | Review | Vytvorí recenziu z DTO — posledný krok buildera. |
approve() / reject() / update() / delete() | Review / void | Životný cyklus moderovania. |
respond(Review, Model $author, string $content, ?string $title) | Review | Vytvorí odpoveď vlastníka. |
vote(Review, Model $voter, bool $helpful) / removeVote(Review, Model $voter) | ReviewVote / bool | Hlasy užitočnosti (removeVote() vráti false, ak hlas neexistoval). |
verify(Review) / unverify(Review) | Review | Nastaví alebo zruší príznak overenia; spustí ReviewVerified. |
fake() | ReviewsFake | Nasadí zaznamenávajúci fake — pozrite Testovanie. |
Jeden predmet: Reviews::for()
for($subject) vráti ReviewableScope s predmetom pevne daným pri vytvorení — nič, čo vráti, sa nedostane k riadkom iného predmetu. Jeho agregáty počítajú len schválené recenzie najvyššej úrovne; jeho query() vráti recenzie predmetu najvyššej úrovne v každom stave. Reviews::query() je širší dopyt nad všetkými recenziami nastaveného modelu, ktorý rešpektuje jeho výmenu.
Pomocné metódy modelov idú cez ten istý manažér
$product->addReview(), agregáty z HasReviews, $review->respond(), $review->markVerified() / markUnverified() aj pomocné metódy CanVoteOnReviews delegujú na ten istý manažér. Prepísanie v kontajneri preto platí všade a Reviews::fake() vidí každé volanie.
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 kryptomienOdoslaní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.