Hook Plugin
Hook plugini, çekirdek yapıya müdahale etmeden, uygulamanın istenilen yerinde, geliştirici tarafından yazılan sınıf ve fonksiyonların çalıştırılmasını sağlar.
Plugini Dahil Etmek
Hook plugini, controller içerisinde aşağıdaki şekilde uygulamaya dahil edilir;
$this->load->plugin('hook');
Hook Oluşturma
Hook yapısı ile çalıştırılacak olan sınıf ve fonksiyonlar /app/hooks
dizini içerisinde bulunmalı ve dosya isimleri büyük harfle başlamalıdır.
Oluşturulan hook dosyasının çalıştırılabilmesi için, /app/config
dizininde bulunan hooks.php
içerisinde sisteme tanıtılması gerekir. Bu dosya aşağıdaki yapıya sahip bir adet dizi değişken barındırır.
return [
'hook_name' => [
'filename' => 'HookFile', // '/app/hooks' dizininde bulunan hook dosyasının ismi.
'class' => 'ClassName', // Hook dosyasında bulunan sınıf ismi. Sınıf yok ise bu satır silinebilir.
'method' => 'MethodName', // Hook dosyasında çalıştırılacak olan fonksiyon ismi.
'params' => ['param1','param2'] // Çalıştırılacak fonksiyona verilecek olan parametreler.
],
];
Parametre Ekleme
Oluşturulan hook dosyasında bulunan bir fonksiyona parametre eklemek için add_param()
methodu kullanılır.
Parametre | Veri Tipi |
---|---|
$params | Array |
Hook içerisinde yer alan fonksiyon birden fazla parametre alıyorsa, bu parametreler add_param()
methodu kullanılarak sırasıyla eklenmelidir.
// Örnek 1
$this->hook->add_param(['key1' => 'value1', 'key2' => 'value2']);
// Örnek 2
$params = [
'key1' => 'value1',
'key2' => 'value2'
];
$this->hook->add_param($params);
Hook Çalıştırma
Oluşturulan bir hook'un çalıştırılması için run()
methodu kullanılır.
Parametre | Veri Tipi |
---|---|
$hook_name | String |
// Örnek kullanım
$this->hook->run('hook_name');
Örnek Kullanım
Hook konusunda basit bir örnek olarak, e-posta gönderimi yapan bir fonksiyon oluşturalım ve çalıştıralım.
- Önce
/app/hooks
dizini içerisinde, e-posta gönderimi yapan fonksiyon oluşturulur;
// Sendmail.php
function sendMail($to, $subject, $text) {
mail($to, $subject, $text);
}
- Hook dosyasını sisteme tanıtmak için,
/app/config
dizininde bulunanhooks.php
dosyasına aşağıdaki dizi eklenir;
// hooks.php
'sendmail' => [
'filename' => 'sendmail',
'method' => 'sendMail'
],
- Mail gönderimi yapılacak olan yerde hook plugini sisteme dahil edilip gerekli parametreler tanımlanır ve çalıştırılır;
// sampleController.php
$this->load->plugin('hook');
$params = [
'to' => 'test@test.com',
'subject' => 'Mail konusu',
'text' => 'Mail içeriği'
];
$this->hook->add_param($params);
$this->hook->run('sendmail');