PHPackages                             jdikasa/laravel-repository-pattern - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. jdikasa/laravel-repository-pattern

ActiveLibrary

jdikasa/laravel-repository-pattern
==================================

Laravel package for generating Repository pattern components

v1.0.23(10mo ago)026MITPHPPHP ^8.2

Since Jun 11Pushed 10mo agoCompare

[ Source](https://github.com/Jdikasa/laravel-repository-pattern)[ Packagist](https://packagist.org/packages/jdikasa/laravel-repository-pattern)[ RSS](/packages/jdikasa-laravel-repository-pattern/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (7)Versions (25)Used By (0)

Laravel Repository Pattern Generator
====================================

[](#laravel-repository-pattern-generator)

[![Latest Version on Packagist](https://camo.githubusercontent.com/d117a35de13bde639a35d278168fabb833d24c4f0c4b029057d5e49a870aec73/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6a64696b6173612f6c61726176656c2d7265706f7369746f72792d7061747465726e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/jdikasa/laravel-repository-pattern)[![Total Downloads](https://camo.githubusercontent.com/19a56fa6668182a9e4ca3e3dbf74b4b99d29c9eed23becf57f6632c2e6bf28ec/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6a64696b6173612f6c61726176656c2d7265706f7369746f72792d7061747465726e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/jdikasa/laravel-repository-pattern)[![Laravel 9.x|10.x|11.x](https://camo.githubusercontent.com/558e2c0b1106547fd68223ba03b5c1d5c14d2d42a67457da4755f851421632d0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d392e7825374331302e7825374331312e782d7265642e7376673f7374796c653d666c61742d737175617265)](https://laravel.com)[![PHP 8.0+](https://camo.githubusercontent.com/727424772beb7fe8fe3349aa97eaf11712b8c54e2991e8ee862a1d1f52b2be81/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e302b2d626c75652e7376673f7374796c653d666c61742d737175617265)](https://php.net)

Un package Laravel puissant pour générer automatiquement tous les composants du pattern Repository en une seule commande : Model, Repository, Service, Controller, Transformer et Requests.

✨ Fonctionnalités
-----------------

[](#-fonctionnalités)

- 🚀 **Génération complète** : Model, Repository, Service, Controller, Transformer, Requests (Store/Update)
- 🎨 **Stubs personnalisables** : Adaptez les templates à vos besoins
- 📁 **Structure organisée** : Chaque composant dans son dossier approprié
- ⚡ **Une seule commande** : Générez tout le pattern en une fois
- 🔧 **Configuration flexible** : Personnalisez les namespaces et dossiers
- 📝 **Code propre** : Templates respectant les bonnes pratiques Laravel

🎯 Compatibilité
---------------

[](#-compatibilité)

Version PackageLaravelPHP1.x9.x, 10.x, 11.x8.0+📦 Installation
--------------

[](#-installation)

```
composer require jdikasa/laravel-repository-pattern
```

Le package se configure automatiquement grâce à la découverte automatique de Laravel.

🚀 Utilisation
-------------

[](#-utilisation)

### Commande principale

[](#commande-principale)

```
php artisan make:model-pattern Post
```

Cette commande génère automatiquement :

- ✅ `app/Models/Post.php` - Le modèle Eloquent
- ✅ `app/Repositories/PostRepository.php` - Le repository
- ✅ `app/Services/PostService.php` - La couche service
- ✅ `app/Http/Controllers/PostController.php` - Le contrôleur
- ✅ `app/Transformers/PostTransformer.php` - Le transformer
- ✅ `app/Http/Requests/Post/StorePostRequest.php` - Request pour création
- ✅ `app/Http/Requests/Post/UpdatePostRequest.php` - Request pour mise à jour

### Options disponibles

[](#options-disponibles)

```
# Forcer l'écrasement des fichiers existants
php artisan make:model-pattern Post --force
```

🏗️ Structure générée
--------------------

[](#️-structure-générée)

```
app/
├── Models/
│   └── Post.php
├── Repositories/
│   └── PostRepository.php
├── Services/
│   └── PostService.php
├── Http/
│   ├── Controllers/
│   │   └── PostController.php
│   └── Requests/
│       └── Post/
│           ├── StorePostRequest.php
│           └── UpdatePostRequest.php
└── Transformers/
    └── PostTransformer.php

```

🔧 Configuration
---------------

[](#-configuration)

### Publier la configuration

[](#publier-la-configuration)

```
php artisan vendor:publish --tag=repository-pattern-config
```

### Fichier de configuration

[](#fichier-de-configuration)

```
// config/repository-pattern.php
return [

    /**
     * Namespaces personnalisés
     */
    'namespaces' => [
        'repository' => 'App\\Repositories',
        'service' => 'App\\Services',
        'transformer' => 'App\\Transformers',
        'controller' => 'App\\Http\\Controllers',
        'request' => 'App\\Http\\Requests',
    ],

    /**
     * Répertoires de génération
     *
     * Ces repertoires doivent correspondre à vos namespaces personnalisés
     */
    'paths' => [
        'repository' => 'app/Repositories',
        'service' => 'app/Services',
        'transformer' => 'app/Transformers',
        'controller' => 'app/Http/Controllers',
        'request' => 'app/Http/Requests',
    ],

    /**
     * Options de génération
     *
     * Choisissez quelles classes générer
     *
     * Les options suivantes peuvent être définies à true ou false
     */
    'generations' => [
        'model' => true,
        'controller' => true,
        'repository' => true,
        'transformer' => true,
        'service' => true,
        'request' => true,
    ],

    /**
     * Templates personnalisés
     *
     * L'option suivante vous permet de définir des paths vers vos stubs personnalisés
     */
    'custom_stubs' => [
        'repository' => 'resources/stubs/repository-pattern/repository.stub',
        'service' => 'resources/stubs/repository-pattern/service.stub',
        'controller' => 'resources/stubs/repository-pattern/controller.stub',
        'transformer' => 'resources/stubs/repository-pattern/transformer.stub',
        'request' => 'resources/stubs/repository-pattern/request.stub',
    ],

    /**
     * Preffixes des classes
     */
    'preffixes' => [
        'repository' => '',
        'service' => '',
        'controller' => '',
        'transformer' => '',
        'request' => [
            'store' => 'Store',
            'update' => 'Update'
        ],
    ],

    /**
     * Suffixes des classes
     */
    'suffixes' => [
        'repository' => 'Repository',
        'service' => 'Service',
        'controller' => 'Controller',
        'transformer' => 'Transformer',
        'request' => 'Request',
    ],
];
```

### Publier les stubs (optionnel)

[](#publier-les-stubs-optionnel)

```
php artisan vendor:publish --tag=repository-pattern-stubs
```

Les stubs seront publiés dans `resources/stubs/repository-pattern/` et vous pourrez les personnaliser selon vos besoins.

### Publier les helpers (optionnel)

[](#publier-les-helpers-optionnel)

```
php artisan vendor:publish --tag=repository-pattern-helpers
```

Les helpers seront publiés dans `app/Helpers/` et vous pourrez les personnaliser selon vos besoins.

📝 Exemple d'utilisation
-----------------------

[](#-exemple-dutilisation)

Après avoir généré les composants pour `Post` :

### 1. Repository

[](#1-repository)

```
// app/Repositories/PostRepository.php
class PostRepository extends BaseRepository
{
    public function model(): string
    {
        return Post::class;
    }

    public function getPublishedPosts()
    {
        return $this->model->where('status', 'published')->get();
    }
}
```

### 2. Service

[](#2-service)

```
// app/Services/PostService.php
class PostService
{
    public function __construct(
        private PostRepository $postRepository
    ) {}

    public function createPost(array $data): Post
    {
        return $this->postRepository->create($data);
    }
}
```

### 3. Controller

[](#3-controller)

```
// app/Http/Controllers/PostController.php
class PostController extends Controller
{
    public function __construct(
        private PostService $postService,
        private PostTransformer $postTransformer
    ) {}

    public function store(StorePostRequest $request)
    {
        $post = $this->postService->createPost($request->validated());

        return response()->json([
            'data' => $this->postTransformer->transform($post)
        ], 201);
    }
}
```

🎨 Personnalisation des stubs
----------------------------

[](#-personnalisation-des-stubs)

Une fois les stubs publiés, vous pouvez personnaliser les templates dans `resources/stubs/repository-pattern/` :

- `repository.stub` - Template du repository
- `service.stub` - Template du service
- `controller.stub` - Template du contrôleur
- `transformer.stub` - Template du transformer
- `request.stub` - Template des requests

### Variables disponibles dans les stubs

[](#variables-disponibles-dans-les-stubs)

- `{{ModelName}}` - Nom du modèle (ex: Post)
- `{{ModelNameLowercase}}` - Nom du modèle en camelCase (ex: post)
- `{{ModelNamePlural}}` - Nom du modèle au pluriel (ex: posts)
- `{{ModelNameKebab}}` - Nom du modèle en kebab-case (ex: post-category)
- `{{ModelNameSnake}}` - Nom du modèle en snake\_case (ex: post\_category)
- `{{RepositoryNamespace}}` - Namespace des repositories
- `{{ServiceNamespace}}` - Namespace des services
- `{{TransformerNamespace}}` - Namespace des transformers

🤝 Contribution
--------------

[](#-contribution)

Les contributions sont les bienvenues ! Pour contribuer :

1. Fork le projet
2. Créez une branche pour votre fonctionnalité (`git checkout -b feature/nouvelle-fonctionnalite`)
3. Committez vos changements (`git commit -am 'Ajout d'une nouvelle fonctionnalité'`)
4. Poussez vers la branche (`git push origin feature/nouvelle-fonctionnalite`)
5. Ouvrez une Pull Request

📋 Roadmap
---------

[](#-roadmap)

- Support des migrations automatiques
- Génération des tests automatiques
- Support des relations Eloquent
- Templates pour API Resources
- Support des Factory et Seeders

🐛 Signaler un bug
-----------------

[](#-signaler-un-bug)

Si vous trouvez un bug, veuillez ouvrir une issue sur [GitHub](https://github.com/jdikasa/laravel-repository-pattern/issues) avec :

- La version de Laravel utilisée
- La version du package
- Les étapes pour reproduire le bug
- Le message d'erreur complet

📄 Licence
---------

[](#-licence)

Ce package est open source sous licence [MIT](LICENSE.md).

🏷️ Changelog
------------

[](#️-changelog)

### v1.0.0 - Release initiale

[](#v100---release-initiale)

- ✅ Génération complète du pattern Repository
- ✅ Support Laravel 9.x, 10.x, 11.x
- ✅ Stubs personnalisables
- ✅ Configuration flexible
- ✅ Documentation complète

---

Développé avec ❤️ par [Jean-louis Dikasa](https://github.com/jdikasa)

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance53

Moderate activity, may be stable

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

24

Last Release

326d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f5f9b45dc969bbddfdac61544008ece756d4bd2f7849102730c065a223d0239c?d=identicon)[Jdikasa](/maintainers/Jdikasa)

---

Top Contributors

[![Jdikasa](https://avatars.githubusercontent.com/u/81484470?v=4)](https://github.com/Jdikasa "Jdikasa (31 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/jdikasa-laravel-repository-pattern/health.svg)

```
[![Health](https://phpackages.com/badges/jdikasa-laravel-repository-pattern/health.svg)](https://phpackages.com/packages/jdikasa-laravel-repository-pattern)
```

###  Alternatives

[barryvdh/laravel-ide-helper

Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.

14.9k123.0M687](/packages/barryvdh-laravel-ide-helper)[laravel/ui

Laravel UI utilities and presets.

2.7k134.9M601](/packages/laravel-ui)[tucker-eric/eloquentfilter

An Eloquent way to filter Eloquent Models

1.8k4.8M26](/packages/tucker-eric-eloquentfilter)[orchestra/canvas

Code Generators for Laravel Applications and Packages

21017.2M158](/packages/orchestra-canvas)[sammyjo20/lasso

Lasso - Asset wrangling for Laravel made simple.

355347.9k](/packages/sammyjo20-lasso)[flarum/core

Delightfully simple forum software.

211.3M1.9k](/packages/flarum-core)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
