Skip to content

Instantly share code, notes, and snippets.

@cod3beat
Last active November 18, 2015 08:06
Show Gist options
  • Save cod3beat/050af2bd3d694fabb69c to your computer and use it in GitHub Desktop.
Save cod3beat/050af2bd3d694fabb69c to your computer and use it in GitHub Desktop.
Menjalankan Event Handler di background
<?php
abstract class <?php
abstract class QueuedEventHandler
{
// Akan dijalankan ketika event diterima
// Ini adalah mekanisme internal Laravel 4.2
public function handle($param)
{
$this->handleEvent($param);
}
public function handleEvent($param)
{
// Menangkap event
$currentEventName = Event::firing();
// Memperoleh event name.
//
// Metode ini tidak ditampilkan, karena sangat tergantung
// dari bagaimana Domain Event disimpan di struktur Aplikasi.
$domainEvent = $this->getDomainEventName($currentEventName);
// Mengambil namespace dari Event Listener ini.
// Sehingga kita dapat menjalankannya di sistem Queue
$currentNamespace = $this->getClientClassFullNamespace();
// Memeriksa apakah Event Listener ini memiliki fungsi untuk
// menangani event
if (method_exists($this, "when$domainEvent")) {
// logging event handling
Log::info("Event $currentEventName has been captured. And now executing when$domainEvent");
// Menjalankan handler di background
//
// Ini juga mekanisme internal Laravel 4.2
Queue::push(
"$currentNamespace@when$domainEvent",
[
$param
]
);
} else {
// ketika tidak ada event handler untuk event ini,
// kita log saja dalam sebuah warning.
Log::warning("Event $currentEventName has been captured. But no when$domainEvent to handle the event");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment