As Repositories layer uses laravel-repositories library.
Install the saritasa/laravel-entity-services
package:
bash $ composer require saritasa/laravel-entity-services ```
## Usage
### Get service for model:
```php
$entityServiceFactory = app(IEntityServiceFactory::class);
$entityService = $entityServiceFactory->build(User::class);
*Note: if entity class not exists, EntityServiceException will be thrown
To publish configuration file you can run next command:
php artisan vendor:publish --tag=laravel_entity_services
It will copy file laravel_entity_services.php in config directory.
To register your own IEntityService implementation you can put it into configuration file, like:
return [
'bindings' => [\App\Models\User::class => \App\EntityServices\UserEntityService::class,],];
NOTE: Just remember that default IEntityServiceFactory implementation can work only with classes extended from EntityService. If you want change this behavior you should add your own implementation.
$createdModel = $entityService->create($params);
php $entityService->update($model, $params);
php $entityService->delete($model);
If you need use custom service for some entity, you can register it in factory using register
method.
Example:
$entityServiceFactory = app(IEntityServiceFactory::class);
$entityService = $entityServiceFactory->register(User::class, YourServiceRealization::class);
Note: Your realization must be extend EntityService class
EntityCreatedEvent - Throws when entity is created.
EntityUpdatedEvent - Throws when entity is updated.
EntityDeletedEvent - Throws when entity is deleted.
- Create fork, checkout it
- Develop locally as usual. Code must follow PSR-1, PSR-2 -
run PHP_CodeSniffer to ensure, that code follows style guides - Cover added functionality with unit tests and run PHPUnit to make sure, that all tests pass
- Update README.md to describe new or changed functionality
- Add changes description to CHANGES.md file. Use Semantic Versioning convention to determine next version number.
- When ready, create pull request
If you have GNU Make installed, you can use following shortcuts:
make cs
(instead ofphp vendor/bin/phpcs
) -
run static code analysis with PHP_CodeSniffer
to check code stylemake csfix
(instead ofphp vendor/bin/phpcbf
) -
fix code style violations with PHP_CodeSniffer
automatically, where possible (ex. PSR-2 code formatting violations)make test
(instead ofphp vendor/bin/phpunit
) -
run tests with PHPUnitmake install
- instead ofcomposer install
*make all
or justmake
without parameters -
invokes described above install, cs, test tasks sequentially -
project will be assembled, checked with linter and tested with one single command