PHP ve Hook

Standard

Word Press ile hiç işim olmadı, sadece kendime ve eşe dosta blog kurduğum kadardı ilgi alakam ancak son girmiş olduğum şirkette alınmış olan bir proje yüzünden wordpress editlemem gerekti..

Daha sonra sistemin içine girdikçe bazı durumlarda kendi kendini tetikleyen yapılar hazırlandığını gördüm. Hook.. Yada Türkçe tabiri ile kanca..

Hook Sistemini şöyle açıklayalım; Vbulletin, WordPress gibi yapılarda plugin geliştiricinin işini kolaylaştırmak için kullanılır.. Örneğin wordpress’teki gibi temanın functions.php dosyasına yazdığımız kendi fonksiyonlarımızı sisteme entegre etmek için kullanmaya yarar. Yani direk core dosyalarına müdahale etmenize gerek kalmaz. Bu teknik Daha çok geliştirilebilir sistemler üzerinde kullanılıyor..  Hatta codeignater da bu yapıyı kullanır.

Özetle uygulamanın istediğimiz bir zamanı istediğimiz bişeyin olmasını istersek kanca sistemini kullanabiliriz.

Kendimize büyük bi sistem yazmak istersek işe yarayabilir diye düşünüyorum.

Şimdi basit yoldan size bir hook yapısı hazırlayalım..

<?php
//Event Listemizi tanımlayalım
$event_listesi = array();

//Eventleri başlatacağımız fonksiyonumuz
function event_baslasin($event)
{
    global $event_listesi;

    if(isset($event_listesi[$event]))
    {
        foreach($event_listesi[$event] as $fonksiyon_arr)
        {
			$fonksiyon = $fonksiyon_arr[0];
			$args = $fonksiyon_arr[1];

            if(!function_exists($fonksiyon)) {
                die('Tanımlanmamış fonksiyon: '.$fonksiyon);
            }
                call_user_func($fonksiyon, $args);
            }
    }

}

//Eventlerimizi ekleteceğimiz fonksiyon
function event_ekle($event, $fonksiyon, $params = array())
{
    global $event_listesi;
    $event_listesi[$event][] = array($fonksiyon,$params);
}

//Eklediğimiz eventleri tetikleteceğimiz fonksiyon
function event_tetikle($icerik) {
    event_baslasin('icerik_goruntule'); //Burada da startını vefelim
}

//Kaydettiğimiz event in yapacağı iş...
function hosgeldiniz($params) {
    echo 'Merhaba '.$params['isim'].' '.$params['soyisim'].', Sayfamıza Hoş Geldiniz..';
}

event_ekle('icerik_goruntule','hosgeldiniz',array('isim' => 'Onur', 'soyisim' => 'Canalp')); 

event_tetikle('icerik_goruntule');
?>

Görüldüğü üzere eventlerimizi bi dizide tuttuk, event ekledik.. Eklediğimiz event te tetiklenecek fonksiyonu oluşturduk ve event tetikleyeceğimiz fonksiyonu yazdık..

Bu işlemin sonucundaki ekran çıktısı tahmin edeceğiniz üzere:

hook_result

Ve tabi istediğimiz zamanlarda bunları tetikledik. Parametre gönderdik tabi, tercih size bağlı göndermeyedebilirsiniz.. WordPress te 4 parametre gönderiyor du yanlış hatırlamıyorsam..

Aslında çok basit.. Tabi wordpress, codeigniter gibi yapılarda öntanımlı gelen hooklar neler onlara bakmanız gerekiyor. Ne zaman nerede ne tetikleniyor bilmezseniz inspect ederken saç baş yoldurabilir size 🙂

Açıklayıcı olabilmişimdir umarım, sorularınız olursa sorabilirsiniz.. İyi çalışmalar dilerim..

3 thoughts on “PHP ve Hook

  1. Cemil

    Merhabalar,çok merak ettiğim bir konu var,temada sadece istediğim bir sayfada fonksiyonu add_ action yani hook ile nasıl yazarım,teşekkür ederim

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir