Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yaza-putu/laravel-repository-with-service
With repository and service you can separate business logic and query logic, slim controller and DRY. Simple generate repository and service with artisan command, automatically bind interface to class implement with IOC container and dependecy injection (SOLID)
https://github.com/yaza-putu/laravel-repository-with-service
laravel-repository laravel-repository-pattern laravel-repository-service laravel-service
Last synced: 4 days ago
JSON representation
With repository and service you can separate business logic and query logic, slim controller and DRY. Simple generate repository and service with artisan command, automatically bind interface to class implement with IOC container and dependecy injection (SOLID)
- Host: GitHub
- URL: https://github.com/yaza-putu/laravel-repository-with-service
- Owner: yaza-putu
- License: mit
- Created: 2021-10-28T07:16:25.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-05-11T16:21:00.000Z (8 months ago)
- Last Synced: 2024-09-21T10:38:33.135Z (3 months ago)
- Topics: laravel-repository, laravel-repository-pattern, laravel-repository-service, laravel-service
- Language: PHP
- Homepage: https://yaza-putu.github.io/laravel-service-repository-pattern-guide/
- Size: 122 KB
- Stars: 125
- Watchers: 3
- Forks: 25
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Simple repository pattern for laravel, with services!
With easy repository, you can have the power of the repository pattern, without having to write too much code altogether. The package automatically binds the interfaces to the implementations, all you have to do is change in the configuration which implementation is being used at the moment!
## Requirement
- Minimum PHP ^8.2
## Installation
You can install the package via composer for latest version
```bash
$ composer require yaza/laravel-repository-service
```Specific Version :
| Laravel Version | Package Version |
|:---------------:|:------------------:|
| 11 | 5.x |
| 10 | 4.0 |
| 9 | 3.2 |
```bash
# for laravel 10
$ composer require yaza/laravel-repository-service:"^4.0"
# for laravel 9
$ composer require yaza/laravel-repository-service:"^3.2"
```Publish the config file with (Important):
```bash
php artisan vendor:publish --provider="LaravelEasyRepository\LaravelEasyRepositoryServiceProvider" --tag="easy-repository-config"
```## Quick usage
You can also create only the repository, or service, or both with artisan:
```bash
php artisan make:repository User
// or
php artisan make:repository UserRepository// or create together with a service
php artisan make:repository User --service
// or
php artisan make:repository UserRepository --service// or create a service separately
php artisan make:service User
// or
php artisan make:service UserService
// or
php artisan make:service UserService --repository// create service with blank template
php artisan make:service UserService --blank```
## How to change bind interface to new class implementation
Add this config to AppServiceProvider :
```php
$this->app->extend(Interface::class, function ($service, $app) {
return new NewImplement($service);
});
```# Documentation
Note : When you create service the default used api template,in api template use setter getter data inside service for how to use you can look in src/Traits/ResultService.php, if you need blank template when create service, you need add argument --blank, ex : php artisan make:service User --blank.example setter getter service with api template
```php
// getter (on service called)
$serviceName->getData()
$serviceName->getCode()
$serviceName->getMessage()
$serviceName->getError()
// setter (in service)
$this->setCode()
$this->setData()
$this->setError()
$this->setMessage()
```
More details will be explained in docs version 5.Go to guide [Docs V5](https://yaza-putu.github.io/laravel-service-repository-pattern-guide/)
## Changelog
Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.