Hadise var dediler, geldik!

Share Button

HadiseHadise, çok ilkel (basit) bir olay güdümlü programlama kütüphanesidir. Mevcut PHP aplikasyonunuza basitce implemente ederek yazılımınızın akışını tetiklediğiniz olaylar doğrultusunda yönetebilirsiniz.

Hadise kütüphanesinin en güncel sürümünü aşağıdaki github reposunda bulabilirsiniz:
https://github.com/ibrahimgunduz34/hadise

Örneğin projenizin içindeki basit bir api implementasyonuna hadise kütüphanesini uyarlayalım.

Öncelikle olay dinleyecilerimizi kodlayalım.
İlk olarak istek göndermeden önce tetikleyeceğimiz olay dinleyicimizi ile başlayalım.

use \Hadise\IEventListener;
use \Hadise\Event;
class BeforeRequestListener implements IEventListener
{
  public function invoke(Event $event)
  {
    $logData = sprintf("Source:\n" .
                       "------------------\n" .
                       "%s\n" .
                       "Request:\n" .
                       "------------\n" .
                       "%s\n", get_class($event->getSource()),
                       var_export($event->getParameters(), true);
    file_put_contents('transaction_log', $logData, FILE_APPEND);
  }
}

Şimdi de istek gönderdikten sonra tetikleyeceğimiz olay dinleyicimizi kodlayalım.

use \Hadise\IEventListener;
use \Hadise\Event;
class AfterRequestListener implements IEventListener
{
  public function invoke(Event $event)
  {
    $logData = sprintf("Source:\n" .
                       "------------------\n" .
                       "%s\n" .
                       "Response:\n" .
                       "------------\n" .
                       "%s\n", get_class($event->getSource()),
                       var_export($event->getParameters(), true);
    file_put_contents('transaction_log', $logData, FILE_APPEND);
  }
}

Mevcut api implementasyonumuzda istek öncesi ve sonrasında olay dinleyicilerimizin tetiklenmesini sağlayalım.

class MyApiImpl implements MyApiImplInterface
{
  //...
  protected function __sendRequest($url, array $data)
  {
    $requestXML = http_build_query($data);
    EventManager::getManager('MyApiImpl')->riseEvent('beforeRequest', $this, array('data' => $requestXML));
        
    $ch = curl_init();
    //...
    $responseData = curl_exec($ch);
    //...
    EventManager::getManager('MyApiImpl')->riseEvent('afterRequest', $this, array('data' => $responseData));
  }
  //...
}

Son olarak olay dinleyicilerimizi olay yöneticimize iliştirelim.

EventManager::getManager('MyApiImpl')
            ->addListener('beforeRequest', new BeforeRequestListener());
EventManager::getManager('MyApiImpl')
            ->addListener('afterRequest', new AfterRequestListener());

Hepsi bu kadar. İyi eğlenceler :)

Share Button

About İbrahim Gündüz

1983 yılında İstanbul’da doğdu. İlkokul yıllarında cobol ve basic le olan tanışması, yazılıma olan ilgisini arttırdı 2005 yılında. Uludağ Üniversitesi Teknik Bilimler Meslek Yüksek Okulu Elektronik bölümünden mezun olan Gündüz, çeşitli alanlarda faaliyet gösteren kurumlarda yazılım geliştirici olarak görev almıştır. Mesleki ilgi alanları, ölçeklenebilir sistemler, uygulama entegrasyonları ve ödeme sistemleridir. Halen Markafoni back end geliştirici olarak çalışmaktadır.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir