Všetky balíky
Likes for Laravel
DI a akcie
Fasáda je odporúčaná voľba, nie jediná cesta. Rovnaký kód spúšťajú tri vstupy: fasáda Likes (najkratší zápis), manažér RoundlyConsulting\Likes\LikeManager — koreň fasády — injektovaný cez konštruktor (rovnaké API, explicitná závislosť, žiadne statické volania) a akcie (jednoúčelové triedy s execute(), ktoré skladáte do vlastných akcií, jobov a príkazov).
Injektovanie manažéra
use RoundlyConsulting\Likes\LikeManager;
final class LikePost
{
public function __construct(private LikeManager $likes) {}
public function __invoke(User $user, Post $post): bool
{
return $this->likes->actor($user)->as('love')->like($post);
}
}Volanie akcie
use RoundlyConsulting\Likes\Actions\LikeAction;
use RoundlyConsulting\Likes\Actions\LikeManyAction;
use RoundlyConsulting\Likes\DataTransferObjects\LikeData;
app(LikeAction::class)->execute(new LikeData($user, $post, 'love'));
app(LikeManyAction::class)->execute($user, [$post, $comment], 'love');Metóda fasády → akcia
| Metóda fasády / buildera | Akcia |
|---|---|
like() | LikeAction |
unlike() | UnlikeAction |
toggle() | ToggleLikeAction |
react() | SwitchReactionAction |
likeMany() | LikeManyAction |
unlikeMany() | UnlikeManyAction |
- LikeAction, UnlikeAction, ToggleLikeAction a SwitchReactionAction prijímajú DTO LikeData — aktéra, cieľový model a voliteľný typ, overený voči povolenému zoznamu reactions. LikeManyAction a UnlikeManyAction prijímajú aktéra, iterovateľný zoznam cieľových modelov a voliteľný typ.
- Akcia aktéra sama neurčí — odovzdajte ho explicitne.
- Likes::fake() nahradí aj injektovaný LikeManager, takže zaznamená aj kód s injekciou cez konštruktor. Priame volanie akcie záznam vo fake obíde.
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.