Originally published at learninglaravel.net
composer require salmanzafar/laravel-repository-pattern
Will generate all the functionality for Repository pattern implementation
This package implements Laravel auto-discovery feature. After you install it the package provider and facade are added automatically for laravel >= 5.5.
Publish the configuration file
This step is required
php artisan vendor:publish --provider="Salman\RepositoryPattern\RepositoryPatterServiceProvider"
After publishing the configuration file just run the below command
php artisan make:repo ModelName
That's it, Now you've successfully implemented the repository pattern
php artisan make:repo Car
<?phpnamespace App\Repositories;
interface CarRepositoryInterface
{
/**
* Get’s a record by it’s ID
*
* @param int
*/
public function get($id);/** * Get's all records. * * @return mixed */ public function all(); /** * Deletes a record. * * @param int */ public function delete($id); /** * Updates a record. * * @param int * @param array */ public function update($id, array $data);
}
<?phpnamespace App\Repositories;
use App\Car;
class CarRepository implements CarRepositoryInterface
{
/**
* Get’s a record by it’s ID
*
* @param int
* @return collection
*/
public function get($id)
{
return Car::find($id);
}/** * Get's all records. * * @return mixed */ public function all() { return Car::all(); } /** * Deletes a record. * * @param int */ public function delete($id) { Car::destroy($id); } /** * Updates a post. * * @param int * @param array */ public function update($id, array $data) { Car::find($id)->update($data); }
}
Repositories/RepositoryBackendServiceProvider.php
and register the interface and class you have’just created
<?phpnamespace App\Repositories;
use Illuminate\Support\ServiceProvider;
class RepositoryBackendServiceProvider extends ServiceProvider
{public function register() { $this->app->bind( /* * Register your Repository classes and interface here **/ 'App\Repositories\CarRepositoryInterface', 'App\Repositories\CarRepository' ); }
}
app/Http/Controllers/Carcontroller
<?phpnamespace App\Http\Controllers;
use App\Car;
use App\Repositories\CarRepositoryInterface;class CarController extends Controller
{
protected $car;public function __construct(CarRepositoryInterface $car) { $this->$car = $car; } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $data = $this->car->all(); return $data; }
}
That’s it you’ve successfully implemented Repository pattern in your code.
https://github.com/salmanzafar949/Laravel-Repository-Pattern
Originally published at learninglaravel.net
=========================
Thanks for reading :heart: If you liked this post, share it with all of your programming buddies! Follow me on Facebook | Twitter
☞ RESTful API with Laravel: Build a real API with Laravel
☞ Master Laravel - A php framework for Beginner to Advanced
☞ PHP with Laravel for beginners - Become a Master in Laravel
☞ Projects in Laravel: Learn Laravel Building 10 Projects
☞ Laravel 2019, the complete guide with real world projects
☞ Laravel for RESTful: Build Your RESTful API with Laravel
☞ Real Time Single Page Forum App with Pusher Laravel & vuejs
☞ Master Laravel PHP in 2019 for Beginners and Intermediate
#web-development #laravel #php