Belajar Menggunakan Repository Pattern Pada Laravel

Di kali ini saya akan kembali menulis artikel karena telah lama sekali rasanya saya tak menulis di blog ini :), oke seketika saja kita kepada pembahasan. Di awal artikel ini saya akan membahas yang sedikit berat yaitu mengenai menggunakan design pattern di framework laravel yaitu Belajar Menggunakan Repository Pattern Di Laravel.




Di laravel kita dapat menggunakan beberapa design pattern yang benar-benar bermanfaat salah satunya yaitu yang bernama repository pattern, Apa itu repostory pattern ? Repository pattern yaitu sebuah pattern atau pola pendekatan dimana kita membangun abstraksi (dengan suatu class) bagi mengenkapsulasi (menyembunyikan) query. Ketika kita punya query yang kompleks, karenanya Repository Pattern ini dapat mengurangi kompleksitas dan memberikan reusability kepada pengambilan data. Sehingga bukan business logic yang kita taruh Repository, tapi hanya logic yang seketika berkaitan dengan interaksi database (query-query seperti select atau create).



Saya akan contohkan, silahkan bat folder repository seperti gambar di bawah ini :


Pada



Misal kita punya model admin.php :



<?php

namespace App;

use IlluminateDatabaseEloquentModel;

class admin extends Model
{
protected $fillable = [
'id','name','email','password','remember_token','created_at','updated_at'
];

protected $table = 'admin';


}


Lalu bikin file di folder repository nya TodosReository.php  yg isinya yaitu interface seperti ini :



<?php

namespace AppRepositories;

interface TodosRepositories
{
public function getAll();

public function detail($id);

public function create(array $attributes);

public function update($id);

public function delete($id);
}


Lalu bikin file dengan nama EloquentTodosImplements.php yang mana isinya yaitu Query eloquent yang mengimplements interface yang sebelumnya telah kita bikin :



<?php

namespace AppRepositories;

use AppAdmin;

class EloquentTodosImplements implements TodosRepositories
{
private $model;


public function __construct(Admin $model)
{
$this->model = $model;
}

public function getAll()
{
return $this->model->all();
}

public function detail($id)
{
return $this->model->findOrFail($id);
}

public function create(array $attributes)
{
return $this->model->create($attributes);
}

public function update($id)
{

}

public function delete($id)
{
return $this->getById($id)->delete();
return true;
}
}


Nah berikutnya kita bikin controller baru dengan nama TodosController.php isinya kita akan panggil eloquent yang terdapat di repository tadi :



<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use AppRepositoriesTodosRepositories;

class TodosController extends Controller
{

private $todo;


public function __construct(TodosRepositories $todo)
{
$this->todo = $todo;
}


/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index()
{
$foo = $this->todo->getAll();
dd($foo);

}

}


Nah sekiranya di jalankan karenanya akan menampilkan segala datanya.



Dengan demikian itu, kita akan memperoleh manfaat:



– Lebih readable, karena getAll() jelas lebih gampang dibaca daripada Admin::All()


– Reusable. Kita dapat menggunakan query bagi get all ditempat lain.


– Testable. Kita dapat mengerjakan unit test. Karena Repository gampang di mock daripada Eloquent.




Sumber https://kursuswebsite.org

Popular posts from this blog

Perbedaan Antara Keyup dan Keydown Pada jQuery

Membuat Table Warna Berselang dengan PHP