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

Fasáda Likes

RoundlyConsulting\Likes\Facades\Likes predvolene určí aktéra podľa prihláseného používateľa, takže bežné volanie zaberie jeden riadok. Aktéra alebo typ reakcie zmeníte fluentným builderom a jeden cieľový model čítate cez Likes::for():

use RoundlyConsulting\Likes\Facades\Likes;

Likes::like($post);                     // as the authenticated user
Likes::unlike($post);
Likes::toggle($post);
Likes::react($post);                    // one active reaction per actor + likeable
Likes::has($post);                      // bool
Likes::likeMany([$post, $comment]);
Likes::unlikeMany([$post, $comment]);

Likes::actor($user)->like($comment);    // as any actor
Likes::actor($team)->toggle($post);
Likes::as('love')->like($post);         // typed reaction
Likes::actor($user)->as('wow')->toggle($post);
Likes::actor($user)->as('love')->react($post);  // switch reaction in place
Likes::actor($user)->has($post);
Likes::actor($user)->likeMany([$post, $comment]);

Likes::for($post)->count();             // int — all reactions (uses an eager-loaded likes_count)
Likes::for($post)->count('love');       // int — one reaction type
Likes::for($post)->summary($viewer);    // ReactionSummary (viewer defaults to the resolved actor)
Likes::for($post)->likedBy($user);      // bool — default reaction type unless given

Metódy

MetódaVraciaPopis
actor(Model $actor)PendingLikeZačne reťazec pre konkrétneho aktéra.
as(string $type)PendingLikeZačne reťazec pre konkrétny typ reakcie.
like(Model $likeable)boolZabezpečí páčik; vráti true.
unlike(Model $likeable)boolZabezpečí, že páčik nie je; vráti false.
toggle(Model $likeable)boolPrepne páčik; vráti nový stav.
react(Model $likeable)boolNastaví jedinú reakciu aktéra a zmení ju na mieste.
has(Model $likeable)boolČi má aktér danú reakciu (predvolený typ, ak nepoužijete as()).
likeMany(iterable $likeables)voidHromadné pridanie páčikov.
unlikeMany(iterable $likeables)voidHromadné odobratie páčikov.
for(Model $likeable)LikeableLikesČítací handle pre jeden cieľový model — count(), summary(), likedBy().
fake()LikesFakeNahradí manažér zaznamenávajúcim testovacím fake.

Čítací handle for()

Likes::for($likeable) vráti handle LikeableLikes: count(?type) bez typu použije prednačítaný likes_count, summary(?viewer) vráti ReactionSummary pre aktuálneho používateľa (predvolene vyhodnoteného aktéra) a likedBy($actor, ?type) overuje predvolený typ reakcie, ak iný neodovzdáte.

Traity modelov sú len skratka

HasLikes aj GivesLikes volajú ten istý manažér, takže všetko uvedené — vrátane Likes::fake() — platí aj pre ne:

$user->like($post);          // = Likes::actor($user)->like($post)
$post->likesCount();         // = Likes::for($post)->count()
$post->reactionSummary();    // = Likes::for($post)->summary()

Nemenný builder

actor() aj as() zakaždým vrátia nový PendingLike, takže rozpracovaný reťazec si môžete bezpečne uložiť a znova použiť:

$asLove = Likes::as('love');            // an immutable PendingLike — safe to keep

$asLove->like($post);
$asLove->actor($user)->toggle($photo);  // a new builder; $asLove is unchanged
Likes::actor($user)->has($post);        // checks the default reaction

Určenie aktéra

Bez explicitného aktéra sa fasáda obráti na actor_resolver: null použije auth()->user(); callable alebo invokovateľná trieda (získaná z kontajnera) musí vrátiť model alebo null; hodnota, z ktorej nevznikne callable, vyhodí InvalidConfigurationException. Nastavte ho pre iné guardy než web alebo pre aktérov, ktorí nie sú používatelia:

// config/likes.php
'actor_resolver' => fn () => auth('api')->user(),
// or an invokable class-string:
'actor_resolver' => \App\Likes\CurrentActorResolver::class,
namespace App\Likes;

use Illuminate\Database\Eloquent\Model;

final class CurrentActorResolver
{
    public function __invoke(): ?Model
    {
        return auth('api')->user();
    }
}

Laravel nedokáže uložiť do cache konfiguráciu s closures, preto pri php artisan config:cache uprednostnite invokovateľnú triedu.

Keď sa aktér nenájde

Likes::like($post);   // a guest request with no resolvable actor

// RoundlyConsulting\Likes\Exceptions\NoAuthenticatedActorException:
// No actor could be resolved. Authenticate a user or pass an actor
// explicitly via Likes::actor($model).

Čítania, ktoré sa musia vykresliť aj hosťom — withLikedState(), reactionSummary(), toLikeArray() a LikeResource — určia aktéra rovnako, no namiesto výnimky vrátia prázdny stav aktuálneho používateľa.

Globálny alias

facade_alias zaregistruje krátky globálny alias — predvolene Likes — takže fasáda funguje bez importu. Nastavením na null alebo false (LIKES_FACADE_ALIAS=false, prípadne 0/off/no) alias vynecháte; prázdna hodnota sa považuje za nenastavenú, takže sa Likes zaregistruje aj tak:

\Likes::toggle($post);   // the global alias from facade_alias — no import needed

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.