Мы знаем, что приложения с графическим интерфейсом в различных операционных системах управляются событиями. В web для графического интерфейса есть такие вещи, как JavaScript и ActionScript. Однако будет не справедливо сказать, что модель событий нельзя использовать в серверных скриптах (многие из которых не имеют отношения к графическому интерфесу). Модель событий может быть оказаться полезной и в серверных php-скриптах. К счастью у нас есть Kohana и мы не будем изобретать велосипеды для реализации этой модели.
Чтобы добавить событие в Kohanaphp, необходимо использовать метод add

// Добавляет обработчик-функцию foo после выполнения метода контроллера
Event::add('system.post_controller', 'foo');
 
// То же самое, но обработчиком является статический метод Foo::bar
Event::add('system.post_controller', array('foo', 'bar'));
 
// Обработчиком будет метод bar объекта $foo
// Событие происходит когда произведен рендеринг в браузер
Event::add('system.display', array($foo, 'bar'));

Первый аргумент, это имя события. Оно имеет префикс (часть строки до точки). Префиксы необходимы для того чтобы сократить вероятность совпадения имен. В Kohana есть ряд определенных событий, которые имею префикс system.

Чтобы дать сигнал на выполнение функции-обработчика события Kohana необходимо использовать метод run. У данного метода есть необязательный второй аргумент, который может быть использован для обмена данными.

$data = Event::$data;
 
// Отображаем данные
echo Kohana::debug($data);
 
// Генерируем событие post_controller с данными
Event::run('system.post_controller', $data);
 
// Отображаем измененные данные
echo Kohana::debug($data);

Можно задать последовательность выполнения обработчиков, используя методы add_before и add_after

// Добавление функции "f_before_foo" так, чтобы она выполнялась до "foo"
Event::add_before('system.post_controller', 'foo', 'f_before_foo');
 
// Добавление функции "f_after_foo" так, чтобы она выполнялась после "foo"
Event::add_after('system.post_controller', 'foo', 'f_after_foo');

Есть и другие методы, которые заслуживают внимания. С ними можно ознакомиться на страницах документации Kohaha. Вы еще все еще не подписались на RSS-ленту этого блога? Что вы теряете если подпишитесь? 15 секунд в неделю на чтение заголовков анонсов. Что вы теряете если НЕ подпишитесь? Часы поиска нужной информации через поисковые системы. Клиентов, заказы которых вам не удалось выполнить из-за недостатка знаний. Будь успешен! Подпишись на RSS!

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong Rambler Закладки
Tags:

Leave a Reply

Для вставки кода используйте кнопку Код, по умолчанию используется синтаксис подсветки языка php, вы можете поменять его на любой другой поддерживаемый.