–2 vote
yang lalu dalam Laravel oleh  Berbageek Pemula (40 poin)

2 Jawaban

0 vote

Downvote karena pertanyaan kurang spesifik, tanpa penjelasan lebih lengkap, dan penulisan tidak sesuai EYD. 

Apa yang dimaksud dengan "menyusun"?

Contoh masalahnya seperti apa?

Sedikit gambaran, design pattern adalah sekumpulan teknik yang sudah umum diterapkan ketika koding. Ada banyak design pattern: MVC, repository pattern, active record, adapter, decorator, dan lain-lain. Masing-masing pattern spesifik untuk satu persoalan tertentu. Tidak ada yang "all in one" solution.

List lengkap design pattern dan contoh kode dalam PHP bisa dilihat di https://designpatternsphp.readthedocs.io/en/latest/.

Tidak semuanya harus dipahami. Beberapa pattern sudah sering kita jumpai di core Laravel: Facade, Singleton, Builder, dan Command. Beberapa pattern yang sering dijumpai di level aplikasi antara lain: Decorator, Repository, Null Object, dan Fluent Interface.

Design pattern itu seperti kaca mata, kamu akan tahu ketika membutuhkannya. Jika sekarang kamu tidak menemui masalah, lanjutkan koding dengan apa yang dikuasai.

yang lalu oleh  Kawan Berbageek (680 poin)
maksud saya menerapakan design patern di laravel untuk CRUD
Tolong diperbaiki deskripsi pertanyaannya ya, jangan dikosongkan.
0 vote

Kalau pada bagian crud bisa menggunakan design pattern repository. Tetapi khusus untuk bagian insertnya bisa menggunakan builder (lebih enak ditambahkan singleton biar bisa di chaining, tanpa perlu return object tersebut pada setiap method). Sebelum menggunakan design pattern pastikan bahwa tau manfaatnya apa untuk kodingan kamu, karena di beberapa kasus jumlah kode yang kamu tulis akan menjadi lebih banyak.

Berikut contoh kodingan untuk repository pattern kurang lebih berikut.

Studi kasusnya kita membuat repository pattern untuk melakukan crud di model tertentu.

<?php

interface CrudInterface

{

    public function create(array $data): bool;

    public function read(): array;

    public function update(array $data): bool;

    public function delete(int $key) : bool ;

}

class Kambing implements CrudInterface {

    public function create(array $data): bool

    {

        // tulis untuk insert data ke tabel kambing

    }

    public function read(): array

    {

        // tulis untuk select data dari tabel kambing

    }

    public function update(array $data): bool

    {

        // tulis untuk update data ke tabel kambing

    }

    public function delete(int $key): bool

    {

        // tulis untuk hapus data dari tabel kambing

    }

}

class Sapi implements CrudInterface {

    public function create(array $data): bool

    {

        // tulis untuk insert data ke tabel sapi

    }

    public function read(): array

    {

        // tulis untuk select data dari tabel sapi

    }

    public function update(array $data): bool

    {

        // tulis untuk update data ke tabel sapi

    }

    public function delete(int $key): bool

    {

        // tulis untuk hapus data dari tabel sapi

    }

}

Lalu contoh penggunaan design pattern builder sebagai berikut.

studi kasusnya kita pengen melakukan insert data ke class sapi.

class Sapi {

    private $umur;

    private $berat;

    private $warna;

    private $jenis;

    

    public function __construct($umur = '', $berat = '', $warna = '', $jenis = '')

    {

        $this->umur  = $umur;

        $this->berat = $berat;

        $this->warna = $warna;

        $this->jenis = $jenis;

    }

    

    public function data() {

        return [

            'umur' => $this->umur,

            'berat' => $this->berat,

            'warna' => $this->warna,

            'jenis' => $this->jenis

        ];

    }

}

class SapiBuilder {

    private $umur;

    private $berat;

    private $warna;

    private $jenis;

    

    public function setUmur($umur)

    {

        $this->umur = $umur;

        return $this;

    }

    

    public function setBerat($berat)

    {

        $this->berat = $berat;

        return $this;

    }

    public function setWarna($warna)

    {

        $this->warna = $warna;

        return $this;

    }

    public function setJenis($jenis)

    {

        $this->jenis = $jenis;

        return $this;

    }

    

    public function save() {

        return new Sapi($this->umur, $this->berat, $this->warna, $this->jenis);

    }

}

cara penggunaanya

Cara pertama:

kamu bisa menulis urut sesuai daftar method di class SapiBuilder.

$sapi = (new SapiBuilder())

    ->setUmur(12)

    ->setBerat(440)

    ->setUmur(12)

    ->setJenis("perempuan")

    ->save();

Cara kedua:

kamu bisa menulis method tanpa sesuai urutan.

$sapi = (new SapiBuilder())

    ->setUmur(12)

    ->setJenis("perempuan")

    ->setUmur(12)

    ->setBerat(440)

    ->save();

Cara Ketiga:

Kamu bisa menulis sesukamu, bebas apa aja. Perlu di ingat, dibeberapa kasus kamu butuh default value untuk setiap properti di class SapiBuilder.

$sapi = (new SapiBuilder())

    ->setUmur(12)

    ->setJenis("perempuan")

    ->save();

Source Code:


Semoga membantu.

yang lalu oleh  Kawan Berbageek (120 poin)
Selamat datang di Berbageek! Berbageek adalah tempat berbagi pengetahuan programming, ui/ux design, digital marketing & project management dengan konsep tanya-jawab. Sehingga kita bisa menciptakan solusi lebih cepat dan lebih baik. Berikut adalah rule untuk bertanya:
  1. Jangan duplikasi pertanyaan. Dicari dulu pertanyaan yang serupa.
  2. Buatlah pertanyaan yang generik. Tidak boleh bertanya spesifik menyebutkan nama proyek atau nama perusahaan.