Tutorial Design Pattern Repository pada Laravel

Tutorial menggunakan Design Patern Repository pada Laravel
Tutorial menggunakan Design Patern Repository pada Laravel

Tutorial menggunakan Design Pattern Repository pada Laravel – Design Patern merupakan pemilihan penggunaan struktur kode guna menjadi solusi ketika terjadi pengulangan kode, Namun sebelum melanjutnya Design Patern Repository sebaiknya harus mengerti dulu mengenai konsep OOP / Object Oriented Programming PHP pada Pemrograman.

Design Patern dapat dipisahkan oleh 3 aspek penting yaitu Busineess Logic, Data Access Layer dan Data Storage / Source. Saya akan jelaskan ketiga aspek penting tersebut.

  • Busineess Logic, meerupakan penanganan terhadap arah yang ingin dilakukan, misalnya ingin membaca database, maka yang perlu dilakukan pemanggilan fungsi query.
  • Data Access Later, merupakan suatu Class / Model / Repository yang digunakan melakukan query ke dalam database.
  • Data Storage, merupakan penyimpana jenis penyimpanan data di database misalnya MySQL.

Tujuan menggunakan Design Patern Repository salah satu nya membuat struktur kode lebih bagus dan ketika melakukan perbaikan sistem tidak membingungkan programmer, baik yang membuat mapun tim lainnya. Selain itu tugas Design Patern untuk enkapsulasi persistence logic

Rekomendasi Postingan Laravel untuk anda : Tutorial Pemrograman Laravel Lengkap

Langsung saja kita pratikan dan bahas satu persatu .. . .

Tutorial menggunakan Design Patern Repository pada Laravel

Pada Tutorial Kali ini saya tidak akan mulai dari cara membuat projek baru di Laravel, Mustahil rasanya jika sudah belajar sampai tahap ini anda belum meninstalnya. Saya akan menggunakan tabel users bawaan migration dari laravel dengan skema tabel sebagai berikut.

dan silahkan berikan insert data pada tabel user tersebut. Di bawah ini contoh data milik saya.

Tutorial menggunakan Design Patern Repository pada Laravel
Tutorial menggunakan Design Patern Repository pada Laravel

Studi kasus kali ini saya ingin menampilkan semua data dan data berdasarkan id yang ditentukan.

Langkah pertama yang harus dilakukan yaitu membuat folder baru di dalam folder app, saya beri repositories dan di dalam repositories saya bikin folder baru dengan nama user.

── Console
│   └── Kernel.php
├── Exceptions
│   └── Handler.php
├── Export.php
├── Http
├── Providers
│   ├── AppServiceProvider.php
│   ├── AuthServiceProvider.php
│   ├── BroadcastServiceProvider.php
│   ├── EventServiceProvider.php
│   └── RouteServiceProvider.php
├── Repositories
│   └── User
└── User.php

Membuat Interface

Interface merupakan bentuk lain dari abstact, yang digunakan sebagai template sebuah method yang telah dibuat kemudian dibuat ulang dengan interface. Interface hanya memiliki method dan tidak terdapat isi / body denga keyword interface.

Kali ini saya akan membuat 2 method yang nantinya kita tulis ulang direpository class. Silahkab buat file baru didalam folder user dengan nama UserInterface.php

Membuat Class Repository

Kita akan buat sebuah class repository dengan 2 method untuk menampilkan data dengan pagination dan menampiilkan data berdasarkan id. silahkan buat file baru dengan nama UserRepository.php di dalam folder User.

App\Repositories\User\UserRepository.php

Class Repository diatas mengimplementasikan pada interface UserInterface.php yang telah kita buat sebelumnya, jadi nama method di class repository sama dengan nama method di interface.

Kode diatas memanggil Model User di tandai dengan kode use App\User. Model tersebut otomatis terbuat ketika membuat projek baru.

Pertanyaan nya kok tidak terdapat query yang biasa dipakai di elequent, Nah pengganti User:: diganti dengan kode $this->user. Anda juga bisa mengubah contoh kode pada line 18 misalnya menjadi seperti ini.

Membuat Service Provider

Kita tadi telah membuat class dan interface, nah kedua file tersebut harus di daftarkan kedalam service provider agar si Laravel mengenalinya dan dapat dilakukan proses. Service Provider ibarat wadah untuk menempatkan sesuatu, sesuatu yang dimaksud miisalnya seperti class baru yang telah dibuat dengan tujuan tertentu.

Silahkan buat file dengan nama UserRepoServiceProvider.php masih tetap didalam folder user.

App\Repositories\User\UserRepoServiceProvider.php

Agar si Laravel mengenali Serivce Provider yang kita buat maka harus melakukukan konfigurasi penambahan di dalam Config\app.php. Tambahkan kode barikut ini.

Config\app.php

yang perlu anda tambahkan kide pada line 3 yang berisi nama Service Provider yang telah kita buat berurutan dari letak penempatannya.

Berdasarkan file yang kita buat dan dituliskan kode maka folder Repositories menjadi.

├── Repositories
│   └── User
│   ├── UserInterface.php
│   ├── UserRepoServiceProvider.php
│   └── UserRepository.php

Sekarang kita implemnetasikan pemanggilan Design Patern Repository tersebut.

Membuat Routing Baru

Silahkan buat 2 routing dengan kode di bawah ini , saya asumsikan saya telah mempunyai controller dengan nama UserController.php

Routes\web.php

Membuat Controller Baru

Silahkan buat controller baru kemudian buat 2 method yaitu find dan index. Index sendiri digunakan untuk menampilkan semua data dengan pagination sedangkan method find berdarkan id yang di tentukan.

App\Http\Controllers\UserController.php

Controller UserController diatas memanggil interface yang kita buat tadi yaitu UserInterface kemudiian method pada repository kita panggil yaitu getAllPagination() dan findById($id).

Uji Coba Design Patern Repository

Nah pada tahap ini untuk melihat hasil yang telah kita buat, mari kita akses kedua routing yang telah kita buat yaitu /user dan /user/{id}. Hasilnya tentunya berbeda antara punya saya dengan anda karena isi data saya dengan anda berbeda beda yang penting hasilnya sesuai apa yang kita inginkan.

Hasil ketika membuka URL http://127.0.0.1:8000/user

Tutorial menggunakan Design Patern Repository pada Laravel
Tutorial menggunakan Design Patern Repository pada Laravel

Hasil ketika membuka URL http://127.0.0.1:8000/user/1

Tutorial menggunakan Design Patern Repository pada Laravel
Tutorial menggunakan Design Patern Repository pada Laravel

Akhir kita berhasil melakukan proses menampilkan data dari database menggunakan Laravel Design Pattern Repository.

Kesimpulan

Design Patern Repository pada Laravel ini sangat penting untuk memberikan reusability pengambilan data dari database dan dapat mengurasi kompleknya suatu query dengan penulisan kode yang sama. Dengan menggunakan Design Patern Repository Laravel dapat meringankan penanganan pada controller.

Sekian Tutorial menggunakan Design Patern Repository pada Laravel.

Semoga Bermanfaat.

Avatar
Didik
Saya Seorang Developer khususnya pada Bidang Website menggunakan Sistem Operasi Linux dan menyukai Pemrograman Website dan System Administrator. Selain itu saya pemilik website kodingin.com.

One comment

  1. Kenapa harus membuat interface? Kenapa tidak langsung membuat repository class sehingga controller tinggal dependency injection ke repository dan memanggil method di repository?

Leave a Reply