Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Laravel 5
Code

Kostumisasi Event di Laravel

by
Difficulty:BeginnerLength:MediumLanguages:

Indonesian (Bahasa Indonesia) translation by Imam Firmansyah (you can also view the original English article)

Pada artikel ini, kita akan membahas dasar-dasar manajemen event pada Laravel. Ini adalah salah satu fitur anda yang penting, sebagai seorang developer, seharusnya Anda ada didalam gudang persenjataan yang sesuai dengan Framework yang Anda inginkan. Saat kami melanjutkan, kami juga akan memanfaatkan kesempatan ini untuk menciptakan contoh nyata tentang event dan listener, dan juga itulah tujuan akhir artikel ini.

Konsep event di Laravel didasarkan pada pola perancangan perangkat lunak yang sangat populer - disebut sebagai observer pattern. Dalam pola ini, sistem seharusnya mengumpulkan event saat terjadi sesuatu, dan Anda dapat menentukan listener yang menangkap event itu dan bereaksi sesuai dengan hal tersebut. Ini adalah fitur yang sangat berguna dengan cara yang memungkinkan Anda memisahkan komponen dalam sistem yang seharusnya menghasilkan kode yang digabungkan dengan kuat.

Misalnya, Anda ingin memberi tahu semua modul dalam sistem saat seseorang masuk ke website Anda. Dengan demikian, ini memungkinkan mereka bereaksi terhadap login event ini, entah tentang mengirim email atau pemberitahuan dalam aplikasi atau dalam hal apapun yang ingin bereaksi terhadap event login ini.

Dasar-dasar dari Event and Listener

Pada bagian ini, kita akan mengeksplorasi cara Laravel dalam mengimplementasikan event dan listener dalam core framework. Jika Anda terbiasa dengan arsitektur dari Laravel, Anda mungkin tahu bahwa Laravel menerapkan konsep service provider yang memungkinkan Anda menyisipkan berbagai service ke dalam aplikasi.

Dengan cara yang sama, Laravel menyediakan class EventServiceProvider.php yang memungkinkan kita untuk mendefinisikan pemetaan terhadap event listener untuk suatu aplikasi.

Lanjutkan dan tarik file app/Providers/EventServiceProvider.php.

Mari melihat dari dekat properti $listen, yang memungkinkan Anda menentukan array dari event dan listener yang terkait. Array tersebut adalah sesuai dengan event dalam sebuah sistem, dan nilainya sesuai dengan listener yang akan dipicu saat event yang sesuai dipicu (trigger) dalam sebuah sistem.

Saya lebih memilih untuk mengambil contoh dari dunia nyata untuk mendemonstrasikannya lebih jauh. Seperti yang mungkin Anda ketahui, Laravel menyediakan sistem otentikasi yang sudah tersedia sehingga memfasilitasi fitur seperti login, register, dan sejenisnya.

Kita asumsikan bahwa Anda ingin mengirim notifikasi email, sebagai tindakan pengamanan, saat seseorang masuk ke aplikasi. Jika Laravel tidak mendukung fitur event listener, Anda mungkin telah selesai mengedit core class atau cara lain untuk memasukkan kode Anda yang akan mengirim email.

Sebenarnya, Anda berada di pihak yang lebih beruntung saat Laravel membantu Anda memecahkan masalah ini dengan menggunakan event listener. Mari revisi file app/Providers/EventServiceProvider.php agar terlihat seperti berikut.

Illuminate\Auth\Events\Login adalah event yang akan diajukan oleh plugin Auth saat seseorang masuk ke aplikasi. Kami telah mengikat event tersebut ke App\Listeners\SendEmailNotification, jadi akan dipicu pada saat login event.

Tentu saja, Anda perlu menentukan class listener App\Listeners\SendEmailNotification dalam kondisi pertama. Seperti biasa, Laravel memungkinkan Anda membuat template code listener menggunakan perintah artisan.

Perintah ini menghasilkan class event dan listener yang terdaftar di bawah properti $listen.

Dalam kasus kami, event Illuminate\Auth\Events\Login sudah tersedia, jadi hanya menciptakan class listener App\Listeners\SendEmailNotification. Sebenarnya, itu juga akan menciptakan class event Illuminate\Auth\Events\Login jika tidak ada di kondisi pertama.

Mari kita lihat class listener yang dibuat di app/Listeners/SendEmailNotification.php.

Ini adalah method handle yang akan dipanggil dengan dependensi yang sesuai setiap kali listener dipicu. Dalam kasus kami, argumen $event harus berisi informasi kontekstual tentang event login - memasukkan informasi dari pengguna.

Dan kita bisa menggunakan objek $event untuk melakukan pemrosesan lebih lanjut dalam method handle. Dalam kasus ini, kami ingin mengirim notifikasi email ke pengguna yang melakukan login.

Method handle yag direvisi mungkin terlihat seperti:

Jadi begitulah seharusnya Anda menggunakan fitur event di Laravel. Dari bagian selanjutnya dan seterusnya, kita akan melanjutkan dan membuat kustomisasi event dan class listener yang terkait.

Membuat Kustomisasi Event

Contoh skenario yang akan kita gunakan untuk contoh adalah seperti ini:

  • Aplikasi perlu membersihkan cache dalam sistem pada titik-titik tertentu. Kami akan membangkitkan event CacheClear beserta informasi kontekstual saat aplikasi melakukan hal tersebut di atas. Kami akan melewati petunjuk grup cache bersamaan dengan event yang telah dihapus.
  • Modul lain dalam sistem dapat mengggunakan event listener CacheClear dan ingin menerapkan kode yang mempersiapkan cache terkait.

Mari tinjau kembali file app/Providers/EventServiceProvider.php dan mari kita daftarkan pemetaan event dan listener khusus tersebut.

Seperti yang Anda lihat, kami telah mendefinisikan event App\Events\ClearCache dan class listener terkait App\Listeners\WarmUpCache di bawah properti $listen.

Selanjutnya, kita perlu membuat class file terkait. Ingat bahwa Anda selalu bisa menggunakan perintah artisan untuk menghasilkan template kode dasar.

Hal tersebut seharusnya membuat class event di app/Events/ClearCache.php dan class listener di app/Listeners/WarmUpCache.php.

Dengan beberapa perubahan, class app/Events/ClearCache.php akan terlihat seperti ini:

Seperti yang mungkin Anda perhatikan, kami telah menambahkan properti $cache_keys yang akan digunakan untuk menyimpan informasi yang akan diteruskan bersama dengan suatu event. Dalam kasus ini, kami akan melewati grup cache yang sama.

Selanjutnya, mari kita lihat class listener dengan method handle yang diperbarui di app/Listeners/WarmUpCache.php.

Ketika listener dipanggil, method handle dilewatkan dengan instance dari event terkait. Dalam kasus ini, kami harus menjadi instance dari event ClearCache yang akan dilewatkan sebagai argumen pertama ke method handle.

Selanjutnya, itu hanya masalah iterasi melalui setiap cache dan mempersiapkan cache terkait.

Sekarang, kami memiliki segalanya untuk menguji hal-hal yang bertentangan. Mari kita segera membuat file controller di app/Http/Controllers/EventController.php untuk menunjukkan bagaimana Anda bisa meningkatkan sebuah event.

Pertama, kita telah melewati sebuah array cache sebagai argumen pertama saat membuat sebuah instance dari event ClearCache.

Fungsi helper event digunakan untuk meningkatkan event dari mana saja dalam aplikasi. Saat event dinaikkan, Laravel memanggil semua listener untuk melakukan proses listener terhadap event tersebut.

Dalam kasus kami, App\Listeners\WarmUpCache diatur untuk melakukan proses listener terhadap event App\Events\ClearCache. Dengan demikian, method handle App\Listeners\WarmUpCache dipanggil saat event dinaikkan dari controller. Sisanya untuk mempersiapkan cache yang telah dibersihkan!

Jadi itulah bagaimana Anda dapat membuat event khusus dalam aplikasi Anda dan bekerja dengan mereka.

Apa itu Subscriber Event?

Event subscriber memungkinkan Anda untuk menggunakan  banyak event listener subscribe dalam satu tempat. Apakah Anda ingin secara logis mengelompokkan event listener atau Anda ingin memuat event yang berkembang dalam satu tempat, ini adalah event subscriber yang Anda cari.

Jika kita telah menerapkan contoh yang dibahas sejauh ini dalam artikel dengan menggunakan event subscriber, mungkin akan terlihat seperti ini.

Ini adalah method subscribe yang bertanggung jawab untuk mendaftarkan listerner. Argumen pertama dari method subscribe adalah instance dari class Illuminate\Events\Dispatcher yang dapat Anda gunakan untuk mengikat event dengan listener menggunakan method listen.

Argumen pertama dari method listen adalah event yang ingin Anda gunakan dalam proses listener, dan argumen kedua adalah listener yang akan dipanggil saat event dinaikkan.

Dengan cara ini, Anda dapat menentukan banyak event dan listener di class subscriber itu sendiri.

Event class subscriber tidak akan diambil secara otomatis. Anda perlu mendaftarkannya di clas EventServiceProvider.php di bawah properti $subscriber, seperti yang ditunjukkan pada code snippet berikut.

Jadi itu adalah event class subscriber yang Anda inginkan, dan dengan itu kami juga telah sampai pada akhir artikel ini.

Kesimpulan

Hari ini kita telah membahas beberapa fitur menarik dari event dan listener pada Laravel. Mereka didasarkan pada pegamatan design pattern yang memungkinkan Anda untuk meningkatkan event pada aplikasi secara menyeluruh dan memungkinkan modul lain menggunakan listener tersebut bereaksi sesuai dengan event.

Ingin meningkatkan kecepatan Laravel dan memperluas pengetahuan tentang website, atau aplikasi Anda dengan ekstensi? Kami memiliki berbagai hal yang dapat anda pelajari di Envato Market.

Jangan ragu untuk mengungkapkan pendapat Anda menggunakan kolom komentar di bawah ini!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.