Laravel Service Pattern (Bahasa Indonesia)

Поділитися
Вставка
  • Опубліковано 18 січ 2025

КОМЕНТАРІ • 85

  • @mr.ted00
    @mr.ted00 2 місяці тому +1

    izin implment repositorynya mas.. terimakasih sudah berbagi ilmunya

  • @programmertelo
    @programmertelo 2 місяці тому +1

    terimakasih sharingnya mas

  • @ridhosurya5692
    @ridhosurya5692 2 роки тому +1

    terima kasih mas, baru tahu saya ada stuktur seperti ini.

    • @PutuYasaChannel
      @PutuYasaChannel  2 роки тому +1

      Iya bang dengan service pattern & repository pattern ini sudah menerapkan prinsip SOLID jadi ketika bangun project sekala besar mudah di maintenance... Semoga bermanfaat bang

  • @khairon_ners
    @khairon_ners 2 роки тому +4

    Saya yakin bang yasa bakalan besar.
    Penyampaiannya santai dan mengena
    Terus berkarya bang
    Channel wajib yg dijadikan referensi

    • @PutuYasaChannel
      @PutuYasaChannel  2 роки тому

      Makasih bang semoga konten saya bisa bermanfaat

  • @badarnento3000
    @badarnento3000 Рік тому +1

    Kalo untuk implementasi projeknya sdh pendekatan microservices, menurut saya ini over engineering, cukup sampai level controller dan repo saja, kalau tambah service jadi terlalu kompleks dan journey program nya terlalu lama

    • @PutuYasaChannel
      @PutuYasaChannel  Рік тому +2

      Tergantung programer sih, mau implement sampek mana,itu akan over engineering jika membuatnya manual, makanya saya buat package agar dibuat otomatis dan sudah ada crud dalam service nya ..
      Jadi lebih cepet...
      Sama dengan halnya unit test yg lama dibuat yg sering tidak dibuat oleh programer dengab alasan lama.. tapi dibalik itu akan dapat banyak manfaat . Itu sih bang . Kembali lagi sama progremernya .. kalau saya sih menggunakan pola itu agar kodenya gampang di maintenance dan ini cocok untuk project besar kalau kecil mvc dah cukup

    • @agthm_3
      @agthm_3 11 місяців тому

      nah ini, kadang terasa kayak panjang banget padahal project gak sekompleks itu

  • @diajarngoding1451
    @diajarngoding1451 6 місяців тому

    Kalau untuk buat request sama validasi itu di service ya mas

    • @PutuYasaChannel
      @PutuYasaChannel  5 місяців тому

      Pakai form request bang dan pasangnya di controller

    • @PutuYasaChannel
      @PutuYasaChannel  5 місяців тому

      Pakai laravel form request bang pasanganya di controller... Tetep controller yang mengkontrol validasi

  • @fatkur
    @fatkur 2 роки тому +1

    kalo mau ganti implementasinya, berarti yang di rubah di bagian provider ya bang?

    • @PutuYasaChannel
      @PutuYasaChannel  2 роки тому +2

      di github saya sudah ada bang dokumentasinya bang..
      if you need to change or modification bind interface to new implement class you can add this config to AppServiceProvider :
      $this->app->extend(Interface::class, function ($service, $app) {
      return new NewImplement($service);
      });

  • @monza-y4n
    @monza-y4n 2 місяці тому

    Bang izin nanya misal dengan project yang basenya masih view apa worth aja ya? Dan dari segi kecepatan website apa berpengaruh juga?
    Terimakasih

    • @PutuYasaChannel
      @PutuYasaChannel  2 місяці тому +1

      @@monza-y4n oh service pattern atau repository pattern tidak ada hubungannya dengan kecepatan, itu lebih ke tujuan agar code kita lebih terstruktur, rapi, dan mudah di maintenance...
      Hal ini akan menjadi penting ketika kita sudah membuat sebuah project yang besar dan kompleks...
      Karena saya pernah membuat 1 controller sampai 1000 line, ya pas awal buat itu tidak ada masalah namun ketika lagi 1 tahun saya mau update wah bingung dan sulit maintenance, bayangin semua validasi, query, bisnis logic dimuat dalam controller dan belum lagi permission...

    • @PutuYasaChannel
      @PutuYasaChannel  2 місяці тому +1

      @@monza-y4n jadi perlu dan tidaknya tergantung kita saja sih.. Karena kalau sudah naik level ke senior engineer kita dituntut bukan hanyak bisa ngoding atau membuat fungsinya jalan tapi gimana agar ke depan nya mudah di maintenance apalagi kerja berkelompok biar bisa konsisten

    • @monza-y4n
      @monza-y4n 2 місяці тому +1

      @@PutuYasaChannel siap bang nice info banget, makasih banyak informasinya

  • @paldi1647
    @paldi1647 2 роки тому +1

    saya masih agak bingung untuk model di laravel nih, mau tanya, saya kebetulan sedang ada project membuat API tapi disini saya murni semua pake query builder, kenapa begitu karena di kantor ini kalau query itu subquerynya bisa sampai 5 sub belum nanti ada lagi yang namanya derived table tentu akan bikin pusing di modelnya, apa yang saya lakukan benar ya kalau begitu ? soalnya belum ada contoh si di internet yang punya query complex dibuatin ke eloquentnya

    • @PutuYasaChannel
      @PutuYasaChannel  2 роки тому

      Saya masih belum dapat problem yg di magsd mas.... Apakah problem query komplek yg mas magsd itu berkaitan dengan relasi table ? Misalnya seperti join table atau yg lainya?

    • @PutuYasaChannel
      @PutuYasaChannel  2 роки тому

      Elequent pun bisa untuk menangani query yg kompleks mas, misalnya dalam table tersebut ada banyak relasi table nah di elequent itu ada namanya eger loading, jadi ini akan otomatis memanggil relasi data, dan relasi akan di load jika di panggil dan mudah dari pada buat subquery manual...
      Disamping itu setelah query data jika ingin mengolah data bisa gunakan fitur collectionnya

    • @PutuYasaChannel
      @PutuYasaChannel  2 роки тому

      Untuk benar atau tidak itu tidak ada salah mas, tergantung nyamanya kita, kalau dengan elequent bisa dengan mudah memanggil relasi, karna otomatis dibuatkan subquery dan itu di eksekusi ketika kita perlu relasi datanya..
      Elequent itu berkaitan dengan model karna di model kita bisa mendefinisikan relasi data , kolom mana yg ingin di protect untuk tidak tampil dan banyak lagi bisa mas kalau pakai model...
      Kalau performa itu belum pernah saya bandingkan... Mungkin lebih cepat query builder tapi kalau tepat implementasi qury buildernya...

  • @itjustme5097
    @itjustme5097 Рік тому

    Bli bahas tentang facade dong bli, fungsi facade itu apa

  • @Komar-yb4rp
    @Komar-yb4rp 2 роки тому

    bagaimana jika kita sudah memiliki 3 repository dan 3 service yaitu kelurahan, kecamatan dan kabupaten. Kemudian kita ingin get data kelurahan, kecamatan dan kabupaten berdasarkan id kelurahan. Mana cara yg paling tepat? Apakah bikin method baru di repo yg query ny join ke 3 tabel tersebut, atau justru call 3 repo tsb pada service kelurahan kemudian di mapping? trimakasih 🙏

    • @PutuYasaChannel
      @PutuYasaChannel  2 роки тому

      Kalau saya 1 repository merepresentasikan 1 model, jika case nya 3 model, makan buat satu service yg akan memanggil 3 repository sesuai kebutuhan...

  • @sdbys
    @sdbys Рік тому +1

    bang boleh nanya nanya ? ada sosmed ngga bang?

  • @claymorehighlander7590
    @claymorehighlander7590 Рік тому

    Saya implementasikan di laravel 10, saat make:service muncul error app/Services/Product/ProductService.php): Failed to open stream: No such file or directory.
    dan membuat directory baru App\Service di luar directory app\.

    • @PutuYasaChannel
      @PutuYasaChannel  Рік тому

      Sudah di publish config nya bang.. cek di dokumentasi cara publish confignya bang?

    • @claymorehighlander7590
      @claymorehighlander7590 Рік тому

      sudah mas,.. error tsb terjadi setelah semua prosedur instalasi sampai publish selese.. dan error itu hanya utk make:service saja, utk make:repository tidak ada masalah... saya cek di config/easy-repository.php pun tidak ada yang salah dgn config directory nya..

    • @PutuYasaChannel
      @PutuYasaChannel  Рік тому

      @@claymorehighlander7590 ok bang thanks report nya nanti cobak saya perbaiki.. saya pakai laravel 10 aman mungkin di mac os..
      Kalau mas pakai os apa?

    • @NurAripin-Code
      @NurAripin-Code 5 місяців тому

      @@PutuYasaChannel saya di laravel 9 sama mas, apakah udah di-fix?

    • @PutuYasaChannel
      @PutuYasaChannel  5 місяців тому

      @@NurAripin-Code sudah sih mas, sistem oprasinya apa mas Windows apa Linux? Nanti cobak saya cek

  • @ALdMFbeat
    @ALdMFbeat Рік тому

    bang dimana ya nyari tutor yg misal kaya composer stisla lalu php artisan:install maka akan terinstall temanya di projek laravel kita, soalnya saya mau buat gitu biar di composer require aja dan php artisan install tema yg saya buat sendiri bisa terpasang di projek baru

    • @PutuYasaChannel
      @PutuYasaChannel  Рік тому

      Kalau ini belum pernah bang buatnya... Biasanya kalau saya buat satu project scafold yg sudah terpasang template dan base project.. jadinya kalau butuh tinggal tak clone ..
      tapi kalau mau buat pacakage saya biasanya pakai github.com/spatie/package-skeleton-laravel
      Ini nantinya bisa abang registerkan di packagist lalu bisa deh di composer install pacakage/name

  • @IDewaGedeRakaMurdiarta
    @IDewaGedeRakaMurdiarta 5 місяців тому

    sudah support laravel 11?

  • @siar8529
    @siar8529 2 роки тому

    Ma nanya extension apa saja yang diinstall?

  • @farizsaputra
    @farizsaputra 2 роки тому

    Salam bli Putu.. Terimakasih buat ilmu baru yang super banget di video ini..saya ada beberapa pertanyaan bli,
    1. kalau untuk remove repository berarti tinggal hapus saja di folder yang diinginkan betul ya bli?
    2. Lalu untuk API apakah kita masih membutuhkan resource? atau bisa langsung di servicenya bli?
    Terimakasih sehat selalu banyak rejeki

    • @PutuYasaChannel
      @PutuYasaChannel  2 роки тому +1

      Iya untuk remove repository tinggal hapus saja mas , kalau saya biasanya tetap memakai resource untuk api , dan itu saya pasang di service mas...

    • @farizsaputra
      @farizsaputra 2 роки тому

      @@PutuYasaChannel baik bli.. untuk yang query berarti konsepnya full dilakulan di RepositoryImplement ya? Dan Repository interface merupakan penghubung ke Service interface?

    • @farizsaputra
      @farizsaputra 2 роки тому

      @@PutuYasaChannel dan kalau berkenan juga barangkali bisa dibuatkan video example untuk penerapan resource di service bli.. terimakasih

    • @PutuYasaChannel
      @PutuYasaChannel  2 роки тому

      @@farizsaputra iya mas interface dengan class implement sudah di bind jadi cukup panggil method yg ada dalam interface nya, tujuanya agar konsisten dengan interface...

    • @PutuYasaChannel
      @PutuYasaChannel  2 роки тому

      @@farizsaputra noted mas

  • @agungprasetyonugroho9227
    @agungprasetyonugroho9227 2 роки тому

    Ntah kenapa kok kek terlihat terlalu kompleks ya mas? Setahuku kalau sekarang gk perlu bind dh otomatis bisa diakses di controller kan.
    Dan soal interface, apakah kalau team tergolong kecil menerapinnya terlalu OP? Soalnya misal nih mau tambahin method baru/merubah maka 2x kerja, rubah di implement dan interface. Apakah tanpa interface tapi dengan docblock itu dh cukup?

    • @PutuYasaChannel
      @PutuYasaChannel  2 роки тому

      Interface harusnya tidak berubah mas tapi kalau bertambah mungkin
      .. kenapa interface di bind itu biar bisa kita manggil method interface langsung tanpa manggil class implement nya..
      Nah kalau terkait penerapan service pattern itu tergantung kitanya mas.. punya sama itu pakai artisan make jadi tidak membuat over enginering

    • @PutuYasaChannel
      @PutuYasaChannel  2 роки тому

      Jadi mas bebas berkreasi untuk service pattern

  • @tiyokprasetyo4500
    @tiyokprasetyo4500 Рік тому

    kenapa bind bang registernya engga singleton

    • @PutuYasaChannel
      @PutuYasaChannel  Рік тому +1

      Iya pakai method bind untuk menghubungkan method interface ke service implement tujuanya agar kita setiap memerlukan fungsi itu wajib memanggil interface bukan service implement agar jika terjadi pergantian bisnis logik di class yg menggunakan class tersebut tidak ada yg berubah karena berpatokan pada interface

    • @tiyokprasetyo4500
      @tiyokprasetyo4500 Рік тому

      @@PutuYasaChannel ok siap makasih bang, maaf yaa bang saya sbnernya agak bngung sama penerapan bind singleton klok kasus ini perbedaan dengan singleton apanya yaa bang yang paling berpengaruh saya penasaran

    • @PutuYasaChannel
      @PutuYasaChannel  Рік тому

      @@tiyokprasetyo4500 singleton itu di service yg hanya di eksekusi sekali walaupun di panggil berkali bang.. contohnya untuk koneksi database.. hanya ngebuat 1x koneksi walaupun di panggil berkali-kali

    • @tiyokprasetyo4500
      @tiyokprasetyo4500 Рік тому

      @@PutuYasaChannel yaa itu bang yang saya bngung kan klok singleton lebih efesien sbnernya di panggil sekali. btw makasih bang klok pake bind di tambah deffered bisa yaa bang

    • @PutuYasaChannel
      @PutuYasaChannel  Рік тому

      @@tiyokprasetyo4500 ok siap terimakasih

  • @hajaraswad3345
    @hajaraswad3345 2 роки тому

    Tujuan bind apa ya bang? Soalnya klo saya biasa gak pernah bind, terimakah

    • @PutuYasaChannel
      @PutuYasaChannel  2 роки тому

      tujuannya itu mirip shortcut mas, yg kita panggil itu method di interface yg sudah nge-link ke class implement, singkat kata cutup panggil method di interface saja otomatis manggil method di class implement

    • @fatkulumar7807
      @fatkulumar7807 Рік тому

      @@PutuYasaChannel kalau tapa bind bisa ga bang ? n kalau bisa cara nya gimana ya ? hehe terima kasih bang

    • @PutuYasaChannel
      @PutuYasaChannel  Рік тому +1

      @@fatkulumar7807 bisa bang tapi tidak pakai pacakage yg saya buat... Bisa buat sendiri pola service pattern nya dan tanpa isi interface

  • @syaokifaradisa09
    @syaokifaradisa09 2 роки тому

    Saya masih agak bingung perbedaan repositories dan service mas, yang sya pahami :
    1. Membuat repositories untuk mengumpulkan semua query-query dengan tujuan tertentu dalam suatu model (1 model 1 repositories).
    2. Membuat service bertujuan agar logic-logic tidak banyak di dalam controller dan lebih mudah dimaintenance.
    3. Satu Service bisa memanggil/mengimplementasikan banyak repositories.
    Misalkan ada TransactionService yang salah satu fungsinya untuk melakukan pencatatan transaksi pembayaran dari suatu order. Data yang dicatat seperti siapa user yang bertransaksi (UserRepositories ->getDataById()) dan Order mana yang ingin dibayar (OrderRepositories ->getOrderById()). Berarti 2 repositories yang diperlukan tadi akan di inject ke dalam TransactionService.
    gitu mas?

    • @PutuYasaChannel
      @PutuYasaChannel  2 роки тому

      Iya benar mas, service bisa manggil banyak repository

    • @adityafawzan312
      @adityafawzan312 Рік тому

      @@PutuYasaChannel bahkan jg di satu controller bisa manggil bnyak service jika memang diperlukan mas

    • @PutuYasaChannel
      @PutuYasaChannel  Рік тому

      @@adityafawzan312 iya bener mas, 1 controller bisa memanggil banyak service, 1 service bisa memanggil banyak repository
      Tapi kalau repository hanyak boleh manggil 1 model (single responsibility)

    • @mangeza1753
      @mangeza1753 Рік тому

      @@PutuYasaChannel kalau service A perlu method di service B dan sebaliknya gimana mas apakah itu pola umum? saya coba malah kena "circular dependency" sampe memory leak.

    • @PutuYasaChannel
      @PutuYasaChannel  Рік тому

      @@mangeza1753 sudah pakai depedency injection mas?
      Bisa panggil langsung service B menggunakan Depedency injection...
      Atau kalau hanya perlu query panggil repository B nya..
      Kalau memory leak bukan karena pemanggilan service mas biasanya logic di servicenya kurang beres

  • @tiktok-wq1pd
    @tiktok-wq1pd 7 місяців тому

    saya coba GenUID di laravel inertia vue terbaru tidak bisa login ya bang ? tapi kalau use GenUID nya di hapus bisa login

    • @PutuYasaChannel
      @PutuYasaChannel  7 місяців тому

      Oh kalau use GenUid primary key harus CHAR bang tidak bisa bigint

    • @PutuYasaChannel
      @PutuYasaChannel  7 місяців тому

      Penggunaan GenUid itu auto generate uid untuk primary key CHAR, tujuanya sih agar primary key tidak mudah ditebak sama enduser

    • @tiktok-wq1pd
      @tiktok-wq1pd 7 місяців тому

      @@PutuYasaChannel baik bang . ini kalau saya ganti create uuid nya di controller bisa login bang,

    • @tiktok-wq1pd
      @tiktok-wq1pd 7 місяців тому

      @@PutuYasaChannel 'id' => substr(base_convert(sha1(uniqid(mt_rand())), 16, 36), 0, 36),

    • @tiktok-wq1pd
      @tiktok-wq1pd 7 місяців тому

      @@PutuYasaChannel baik bang . tapi kalau pake traits lebih enak kek nya bang . kek cara nya abang hehe