vivek-mistry / repository-interface
Laravel package for dependency injection to separate business logic.
Fund package maintenance!
vivek-mistry
www.paypal.com/paypalme/vicky18294
Requires
- php: ^8.2||^8.3||^8.4
Requires (Dev)
- larastan/larastan: ^2.9||^3.0
- orchestra/testbench: ^10.0.0||^9.0.0
- pestphp/pest: ^3.8
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/extension-installer: ^1.3||^2.0
- phpstan/phpstan-deprecation-rules: ^1.1||^2.0
- phpstan/phpstan-phpunit: ^1.3||^2.0
This package is auto-updated.
Last update: 2025-05-20 12:37:35 UTC
README
A Laravel package that leverages dependency injection to cleanly separate business logic from other application layers, promoting better code organization, testability, and adherence to SOLID principles
🛠️ Installation
Install the package via Composer:
composer require vivek-mistry/repository-interface
Particular Model Generare the Repository-Interface
php artisan app:make-repo {ModelName}
So using above two files created at app/Repositories/Interface & app/Repositories/Repository
- ModelNameInterface.php
- ModelNameInterfaceRepository.php
Create Service Prvider
php artisan make:provider RepositoryServiceProvider
Register Your Service Provider & register your repository
=> Register your service provider
=> In your RepositoryServiceProvider add below :
public function boot(): void { $this->app->bind( INTERFACE_NAME::class, REPOSITORY_NAME::class ); }
HOW TO USE IN YOUR CONTROLLER?
For example :
class UserController extends Controller { protected $userRepository; /** * Load Repository */ public function __construct( UserRepositoryInterface $userRepository ) { $this->userRepository = $userRepository; } public function index($request) { $data = [ 'name' => $request->name, 'email' => $request->email ]; $this->userRepository->createOrUpdate($data); } }
Testing
composer test
Credits
- Vivek Mistry - Project creator and maintainer
License
MIT License. See LICENSE for details.