CodeIgniter Kullanım Kılavuzu Versiyon 1.7.2


Hook - Çatı Çekirdeğini Genişletmek

CodeIgniter'ın Hook özelliği, çekirdek dosyaları ele geçirmeden çatıya girmenin ve içeride çalışmanın yolunu sağlar. CodeIgniter çalıştığında Uygulama Akış Şemasında tanımlı yolu uygular. Bununla birlikte, uygulamanın çalışmasıyla belirli aşamalarında uygulamaya müdahale etmek isteyebilirsiniz. Örneğin, controller dosyasının yüklenmesinden önce ya da sonra bir script çalıştırmak, ya da başka bir yerde bulunan bir scriptinizi tetiklemek isteyebilirsiniz.

Hook'u Etkinleştirmek

Hook özelliğini tüm uygulamada etkinleştirip, etkisizleştirmek için application/config/config.php dosyasında şu madde ayarlanmalıdır:

$config['enable_hooks'] = TRUE;

Bir Hook Tanımlamak

Hooks application/config/hooks.php dosyasında tanımlanır. Her Hook dizide bir prototip olarak tanımlanır:

$hook['pre_controller'] = array(
                                'class'    => 'MyClass',
                                'function' => 'Myfunction',
                                'filename' => 'Myclass.php',
                                'filepath' => 'hooks',
                                'params'   => array('beer', 'wine', 'snacks')
                                );

Notlar:
Dizi indeksi, kullanmak istediğiniz hook adı ile ilişkilendirilir. Yukarıdaki örnekte, hook noktası pre_controllerdır. Hook noktalarının listesi aşağıdadır. Takip eden maddeleri hook dizisinde ilişkili olarak tanımlanmalıdır :

Aynı Hook'a Çoklu Çağırmak

Eğer birden fazla scripti aynı hook noktasında kullanmak isterseniz, çok-boyutlu dizi tanımlamanız yeterlidir, mesela:

$hook['pre_controller'][] = array(
                                'class'    => 'MyClass',
                                'function' => 'Myfunction',
                                'filename' => 'Myclass.php',
                                'filepath' => 'hooks',
                                'params'   => array('beer', 'wine', 'snacks')
                                );

$hook['pre_controller'][] = array(
                                'class'    => 'MyOtherClass',
                                'function' => 'MyOtherfunction',
                                'filename' => 'Myotherclass.php',
                                'filepath' => 'hooks',
                                'params'   => array('red', 'yellow', 'blue')
                                );

Her dizi indeksinden sonra köşeli paranteze dikkat edin:

$hook['pre_controller'][]

Bu, sizin çoklu scriptlerli aynı hook içinde kullanmanıza izin verir. Dizinlerinizi çalışma önceliğine göre sıralayın.

Hook Noktaları

Mevcut hook noktaları listesi aşağıdadır.