Skip to content

Simple package to easily implement repository pattern

License

Notifications You must be signed in to change notification settings

CodingPhase/repository

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple repositories for Laravel

Package is currently under development !!

Info

Simple package which allows to implement repository pattern in Laravel applications. Inspired by Bosnadev package. Supports criteria, query filters, and can interact with fractal.

Installation

composer require deseco/repository

Add service provider into config/app.php

$providers = [
    ....
   
    Deseco\Repositories\RepositoriesServiceProvider::class,
]; 

Publish configuration

php artisan vendor:publish  --provider="Deseco\Repositories\RepositoriesServiceProvider"

Setup configuration for repositories like:

  • namespace - repositories namespace
  • suffix - for repositories classes e.g.: Repository
  • path - path to repositories
  • class - factory repository class, when injected allows to easily create repositories (has auto-completion for Phpstorm)

Usage

You can create repository with command:

php artisan repository:make

You will be asked to specify repository name

Enter repository name::
> Clients

and alias (optional):

Enter alias name [clients]:
>

You will get two files:

Generating repository...

+-------------------+-------------------+----------+---------+
| Class             | Repository        | Property | Status  |
+-------------------+-------------------+----------+---------+
| ClientsRepository | -                 | -        | Created |
| Repositories      | ClientsRepository | clients  | Created |
+-------------------+-------------------+----------+---------+

Done!

Repository class (implement model method):

<?php

namespace App\Repositories;

use Deseco\Repositories\Eloquent\Repository;

class ClientsRepository extends Repository
{
    /**
     * @return mixed
     */
    public function model()
    {
        // return Model::class;
    }
}

and RepositoriesFactory:

<?php

namespace App\Repositories;

use Deseco\Repositories\Factories\RepositoryFactory;

/**
 * Class Repositories
 */
class Repositories extends RepositoryFactory
{
    /**
	 * @var ClientsRepository
	 */
	public $clients = 'clients';
}

Now you can use factory (you have full auto-completion for properties and methods):

Route::get('/', function (\App\Repositories\Repositories $repo) {
    return $repo->clients->all();
});

or inject repository into class/method and use standalone:

public function index(ClientsRepository $clientsRepository)
{
    $clients = $clientsRepository->all();
}

About

Simple package to easily implement repository pattern

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages