Last active
November 18, 2015 08:06
-
-
Save cod3beat/050af2bd3d694fabb69c to your computer and use it in GitHub Desktop.
Menjalankan Event Handler di background
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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