Konfigurácia
Publikovaný config/likes.php bez komentárov:
use RoundlyConsulting\Likes\Models\Like;
return [
'model' => Like::class,
'table' => env('LIKES_TABLE', 'likes'),
'key_type' => env('LIKES_KEY_TYPE', 'bigint'),
'reactions' => ['like'],
'default_reaction' => env('LIKES_DEFAULT_REACTION', 'like'),
'actor_resolver' => null,
'facade_alias' => env('LIKES_FACADE_ALIAS', 'Likes'),
'weights' => [
// 'like' => 1,
// 'love' => 4,
],
'default_weight' => 1,
'trending' => [
'window' => '7 days',
'recent_multiplier' => 3,
'driver_expressions' => [
// 'pgsql' => 'SUM(1 / POWER(EXTRACT(EPOCH FROM (NOW() - created_at)) / 3600 + 2, 1.8))',
],
],
'broadcast' => [
'enabled' => env('LIKES_BROADCAST', false),
'channel_prefix' => 'likes',
'channel_type' => 'private',
],
];Všetky kľúče
| Kľúč | Predvolené | Env | Účel |
|---|---|---|---|
model | Like::class | — | Eloquent model, ktorý ukladá páčiky. Musí to byť model balíka alebo jeho podtrieda; iná trieda vyhodí InvalidConfigurationException. |
table | likes | LIKES_TABLE | Tabuľka páčikov — číta ju migrácia, model aj všetky scopy. Reťazec; prázdna hodnota (LIKES_TABLE=) sa považuje za nenastavenú a použije sa predvolená. |
key_type | bigint | LIKES_KEY_TYPE | Typ kľúča polymorfných stĺpcov actor a likeable — bigint, uuid alebo ulid. Ak aktéri či cieľové modely používajú kľúče UUID/ULID, nastavte ho pred migráciou; iná hodnota vyhodí InvalidConfigurationException. |
reactions | ['like'] | — | Povolený zoznam typov reakcií — neprázdny zoznam reťazcov. Akýkoľvek iný typ vyhodí InvalidReactionTypeException. |
default_reaction | like | LIKES_DEFAULT_REACTION | Reakcia použitá, keď žiadnu nezadáte. Musí byť uvedená v reactions. |
actor_resolver | null | — | Ako fasáda zistí aktéra: null použije auth()->user(); alebo callable či invokovateľná trieda, ktorá vráti model alebo null. Hodnota, z ktorej nevznikne callable, vyhodí výnimku. |
facade_alias | Likes | LIKES_FACADE_ALIAS | Globálny alias triedy pre fasádu Likes. null alebo false/0/off/no (LIKES_FACADE_ALIAS=false) alias nezaregistruje; prázdna hodnota sa považuje za nenastavenú, takže sa zaregistruje Likes. |
weights | [] | — | Váhy jednotlivých reakcií pre orderByLikeScore() a orderByTrending(). Prázdne = skóre je obyčajný počet. Každá váha musí byť int alebo float. |
default_weight | 1 | — | Váha reakcie, ktorá nie je vo weights (uplatní sa, keď weights nie je prázdne); int alebo float. |
trending.window | 7 days | — | Okno nedávnej aktivity pre orderByTrending(); reťazec (pri prázdnej hodnote platí predvolená). |
trending.recent_multiplier | 3 | — | Koľkokrát viac vážia páčiky v okne oproti celkovej aktivite (int alebo float; iná hodnota vyhodí výnimku). |
trending.driver_expressions | [] | — | Voliteľný surový SQL agregát pre databázový driver (sqlite, mysql, pgsql, …), ktorý nahradí skóre trendov v dopytoch na spojení s týmto driverom. Každý ? sa naviaže na hranicu okna. Výraz, ktorý nie je reťazec, vyhodí výnimku; prázdny sa považuje za nenastavený, takže platí prenosné skóre. |
broadcast.enabled | false | LIKES_BROADCAST | Voliteľné vysielanie udalostí Liked, Unliked a ReactionChanged. Rozumie aj env reťazcom ako true/1/on a false/0/off; čokoľvek iné vyhodí InvalidConfigurationException. |
broadcast.channel_prefix | likes | — | Prefix názvu kanála, napr. likes.posts.42; reťazec (pri prázdnej hodnote platí predvolená). |
broadcast.channel_type | private | — | private, public alebo presence; čokoľvek iné vyhodí výnimku. |
Kľúč, ktorý nie je nastavený — chýba, je null alebo je prázdny ako riadok LIKES_TABLE= v hostiteľskej aplikácii —, použije svoju predvolenú hodnotu (prázdny výraz pre driver: prenosné skóre). Nastavená hodnota musí sedieť: nereťazcové table, default_reaction, trending.window či broadcast.channel_prefix, zoznam reactions, ktorý je prázdny alebo obsahuje nereťazec, nečíselná váha, násobiteľ či predvolená váha, výraz pre driver, ktorý nie je reťazec, alebo preklep v broadcast.channel_type — ten sa už nečíta ako private — vyhodí InvalidConfigurationException, namiesto aby sa použila predvolená hodnota alebo sa nastavenie zahodilo.
Prostredie (env)
Kľúče citlivé na nasadenie sa čítajú z env, takže konfiguráciu publikujete len zriedka:
LIKES_TABLE=likes
LIKES_KEY_TYPE=bigint
LIKES_DEFAULT_REACTION=like
LIKES_FACADE_ALIAS=Likes
LIKES_BROADCAST=falsePravidlá, ktoré sa oplatí poznať
- table a key_type sa čítajú pri spustení migrácie — nastavte ich pred migrovaním.
- default_reaction musí byť v reactions; inak každé volanie bez explicitného typu vyhodí InvalidReactionTypeException.
- Closure v actor_resolver funguje, no Laravel nedokáže uložiť do cache konfiguráciu s closures — pri php artisan config:cache uprednostnite invokovateľnú triedu.
- Broadcasting je vypnutý, kým broadcast.enabled nie je true; vaše listenery udalosti dostanú v každom prípade.
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.