承接 bouleluciole/laravel-eloquent-traits 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

bouleluciole/laravel-eloquent-traits

最新稳定版本:0.1

Composer 安装命令:

composer require bouleluciole/laravel-eloquent-traits

包简介

Reusable Eloquent traits for UUID, ULID, Slugs and more

README 文档

README

Une collection de traits Eloquent robustes et configurables pour automatiser les tâches répétitives de vos modèles Laravel : gestion des médias (compression, miniatures, nettoyage), slugs uniques et identifiants UUID.

🚀 Installation

Installez le package via Composer :

composer require bouleluciole/laravel-eloquent-traits

Le package nécessite PHP 8.2+ et Laravel 11.0+. Les fonctionnalités d'image dépendent de intervention/image (v3).

🛠 Fonctionnalités

1. Compression d'Images (CompressImage)

Compresse intelligemment vos images au format WebP pour économiser de l'espace disque tout en préservant la qualité.

use EloquentTraits\Traits\CompressImage;

class Post extends Model
{
    use CompressImage;

    // Champs à compresser (clé => disque ou simplement valeur si disque par défaut)
    protected $compressibleImageFields = [
        'photo_path' => 'public',
        'avatar'
    ];

    // Taille maximale autorisée en Ko (défaut: 500)
    protected $imageCompressionMaxSize = 800;
}

2. Génération de Miniatures (GeneratesThumbnail)

Génère automatiquement des thumbnails WebP lors de la sauvegarde. Supporte les fichiers locaux et les URLs distantes.

use EloquentTraits\Traits\GeneratesThumbnail;

class Photo extends Model
{
    use GeneratesThumbnail;

    protected $thumbnailConfig = [
        [
            'source' => 'photo_path',
            'target' => 'thumbnail',
            'width'  => 300,
            'height' => 200,
            'prefix' => 'thumbnails/posts/'
        ]
    ];
}

3. Nettoyage Automatique (DeletesFilesOnModel)

Supprime physiquement les fichiers du stockage lorsque le modèle est supprimé ou lorsqu'un champ de fichier est mis à jour. Gère nativement le SoftDeletes.

use EloquentTraits\Traits\DeletesFilesOnModel;

class Document extends Model
{
    use DeletesFilesOnModel;

    // Champs contenant des chemins de fichiers
    protected $fileFields = ['file_path', 'attachment'];

    // Disques à scanner pour la suppression
    protected $fileDisks = ['public', 's3'];
}

4. Slugs Uniques (GeneratesSlug)

Génère des slugs URL-friendly uniques. Si un slug existe déjà, il ajoute automatiquement un suffixe incrémental (ex: titre, titre-2, etc.).

use EloquentTraits\Traits\GeneratesSlug;

class Article extends Model
{
    use GeneratesSlug;

    protected string $slugSourceField = 'title'; // Défaut: 'name'
    protected string $slugColumn = 'slug';       // Défaut: 'slug'
}

5. Identifiants UUID (UseUuid)

Remplace les IDs incrémentaux par des UUIDs version 4 générés automatiquement.

use EloquentTraits\Traits\UseUuid;

class Order extends Model
{
    use UseUuid;

    // Désactive l'auto-incrémentation pour ce modèle
    public $incrementing = false;
    protected $keyType = 'string';
}

🧪 Tests

Le package est testé avec Pest PHP et utilise Orchestra Testbench pour simuler un environnement Laravel complet.

composer test

📖 Détails Techniques

Cycle de vie (Events)

Les traits utilisent les hooks standards d'Eloquent (creating, saving, saved, deleting, updating) pour agir au bon moment sans intervention manuelle.

Gestion du stockage

Tous les traits de fichiers respectent l'abstraction du système de fichiers de Laravel (Storage). Ils sont compatibles avec les disques local, public, s3, etc.

📄 Licence

Ce projet est sous licence MIT. Pour plus d'informations, veuillez consulter le fichier LICENSE.

🤝 Contribution

Les contributions sont les bienvenues !

  1. Forkez le projet.
  2. Créez votre branche de fonctionnalité (git checkout -b feature/AmazingFeature).
  3. Commitez vos changements (git commit -m 'Add some AmazingFeature').
  4. Pushez sur la branche (git push origin feature/AmazingFeature).
  5. Ouvrez une Pull Request.

Développé avec ❤️ par Boule Luciole - bouleluciole@gmail.com

统计信息

  • 总下载量: 69
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-05

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固