Download the PHP package andydefer/laravel-likes without Composer
On this page you can find all versions of the php package andydefer/laravel-likes. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download andydefer/laravel-likes
More information about andydefer/laravel-likes
Files in andydefer/laravel-likes
Package laravel-likes
Short Description Laravel package providing polymorphic reactions (like, love, haha, wow, sad, angry) with Repository pattern, DTOs, Enums, and Value Objects.
License MIT
Informations about the package laravel-likes
Tu as raison, je suis vraiment désolé ! C'est une erreur stupide. Voici la README corrigée sans mentionner un nombre fixe de types :
Laravel Likes
Système de réactions polymorphiques extensible pour applications Laravel
Un package Laravel complet pour gérer des réactions polymorphiques avec un système de toggle intelligent, des enums extensibles, des DTOs et des Value Objects.
📋 Table des matières
- Fonctionnalités
- Prérequis
- Installation
- Configuration
- Extensibilité
- Utilisation
- Toggle une réaction
- Ajouter un like
- Supprimer un like
- Vérifier une réaction
- Compter les réactions
- Récupérer les réactions
- Filtrer par date
- Types de réactions par défaut
- Référence de l'API
- Value Objects
- Structure de la base de données
- Tests
- Contribuer
- Licence
✨ Fonctionnalités
- ✅ Double polymorphisme - Réagissez à n'importe quel modèle avec n'importe quel utilisateur
- ✅ Types de réactions entièrement configurables - Créez vos propres énumérations
- ✅ Toggle intelligent - Changez de réaction en un seul appel
- ✅ Filtrage temporel - Récupérez les réactions après une date donnée
- ✅ Pattern Repository - Séparation propre de la logique d'accès aux données
- ✅ Support des DTOs - Objets de transfert de données typés
- ✅ Value Objects - DateTime, Métadonnées
- ✅ Enum Casts - Conversion automatique entre base de données et énumérations PHP
- ✅ Support des métadonnées - Stockez des données supplémentaires au format JSON
- ✅ Suppression douce - Suppression sécurisée avec possibilité de restauration
- ✅ Filtrage avancé - Filtrez par type, par auteur, par objet
- ✅ Tests complets - Couverture complète des tests d'intégration
🚀 Prérequis
- PHP 8.2 ou supérieur
- Laravel 12.0, 13.0, 14.0 ou 15.0
📦 Installation
Installez le package via Composer :
Publier les migrations
Exécuter les migrations
⚙️ Configuration
Service Provider
Le package est automatiquement découvert par Laravel. Aucune configuration supplémentaire n'est requise.
Configuration des Enum Casts
Le package utilise le système d'EnumCast du package andydefer/laravel-repository pour convertir automatiquement les valeurs en énumérations PHP.
Créez ou modifiez le fichier config/repository.php :
⚠️ Important :
- Sans cette configuration, les énumérations ne seront pas automatiquement converties
- L'énumération DOIT implémenter l'interface
AndyDefer\Repository\Contracts\EnumerableInterface- La méthode
getValue()est obligatoire pour l'interface
🔧 Extensibilité
Créer vos types de réactions personnalisés
Le package est conçu pour être extensible. Vous devez créer votre propre enum qui implémente EnumerableInterface.
⚠️ OBLIGATOIRE : Vos énumérations DOIVENT implémenter l'interface
EnumerableInterface
1. Créer votre enum
2. Configurer l'enum dans le repository
3. Utiliser vos réactions
📖 Utilisation
Toggle une réaction
La méthode toggle() est la plus polyvalente. Elle permet de :
- Ajouter une réaction si elle n'existe pas
- Changer de type de réaction si elle existe déjà
- Supprimer la réaction si le même type est utilisé
Ajouter un like
Supprimer un like
Vérifier une réaction
Compter les réactions
Récupérer les réactions
Filtrer par date
🏷️ Types de réactions par défaut
Le package fournit un enum par défaut, mais vous êtes libre de le remplacer par le vôtre.
| Type | Valeur | Emoji | Label |
|---|---|---|---|
LikeType::LIKE |
'like' |
👍 | J'aime |
LikeType::LOVE |
'love' |
❤️ | J'adore |
LikeType::HAHA |
'haha' |
😂 | Haha |
LikeType::WOW |
'wow' |
😮 | Wow |
LikeType::SAD |
'sad' |
😢 | Triste |
LikeType::ANGRY |
'angry' |
😡 | En colère |
💡 Conseil : Vous pouvez ajouter, supprimer ou modifier ces types en créant votre propre enum comme expliqué dans la section Extensibilité.
📚 Référence de l'API
LikeService
| Méthode | Description | Retourne |
|---|---|---|
toggle(Model $liker, Model $likeable, EnumerableInterface $type) |
Toggle une réaction (ajoute/change/supprime) | bool |
like(Model $liker, Model $likeable) |
Ajoute un like | void |
unlike(Model $liker, Model $likeable) |
Supprime un like | void |
hasLiked(Model $liker, Model $likeable) |
Vérifie si l'utilisateur a réagi | bool |
countLikes(Model $likeable) |
Compte toutes les réactions | int |
countLikesByType(Model $likeable, EnumerableInterface $type) |
Compte les réactions par type | int |
getLikers(Model $likeable) |
Récupère tous les likeurs | Collection |
getLikersByType(Model $likeable, EnumerableInterface $type) |
Récupère les likeurs par type | Collection |
getLikerLikes(Model $liker) |
Récupère les réactions d'un utilisateur | Collection |
getLikerLikesByType(Model $liker, EnumerableInterface $type) |
Récupère les réactions d'un utilisateur par type | Collection |
getLikesUpdatedAfter(DateTimeVO $date) |
Récupère les réactions après une date | Collection |
getLikerLikesUpdatedAfter(Model $liker, DateTimeVO $date) |
Récupère les réactions d'un utilisateur après une date | Collection |
getLikesForLikeableUpdatedAfter(Model $likeable, DateTimeVO $date) |
Récupère les réactions d'un objet après une date | Collection |
🎯 Value Objects
Le package supporte les Value Objects suivants :
| Value Object | Description | Exemple |
|---|---|---|
DateTimeVO |
Date/heure | DateTimeVO::from('2024-01-01 12:00:00') |
StrictDataObject |
Métadonnées typées | StrictDataObject::from(['key' => 'value']) |
Accesseurs dans le modèle Like
📝 Structure de la base de données
🔍 Exemple complet
🧪 Tests
Exécuter les tests
Exécuter uniquement les tests d'intégration
🔧 Développement
Style de code
Analyse statique
📦 Dépendances
andydefer/php-vo- Value Objectsandydefer/laravel-repository- Implémentation du pattern Repository (contientEnumCast)andydefer/domain-structures- Structures de domaine (AbstractRecord, AbstractData)
👨💻 Auteur
Andy Kani
- GitHub: @andydefer
- Email: [email protected]
📄 Licence
Ce package est sous licence MIT. Voir le fichier LICENSE pour plus d'informations.
⭐ Support
Si vous trouvez ce package utile, n'hésitez pas à lui donner une ⭐ sur GitHub !
Construit avec ❤️ pour la communauté Laravel
All versions of laravel-likes with dependencies
laravel/framework Version ^12.0|^13.0|^14.0|^15.0
andydefer/laravel-repository Version ^2.17.30