Работа с событиями в Yii.

image

05.01.14
Comments 5

В сегодняшнем уроке попытаюсь объяснить работу с событиями в php фреймворке Yii, да что уж греха таить, при написании статьи я сам попытаюсь понять как они работают, так как целью моих постов по веб технологиям является не только поделиться с читателями своими знаниями но и подтянуть их.

О работе с событиями вы можете почитать в полном руководстве на сайте русской поддержки Yii. Но мне как новичку в этом фреймворке, оно не совсем было понятно, поэтому мне пришлось искать дополнительную информацию. Конечно бывалым девелоперам этого объяснения думаю хватает с головой.

Я не буду объяснять что такое события, об этом вы можете почитать в полном руководстве, ссылку на статью я давал немного выше, сразу приступим к коду.

Попробую объяснить работу событий на простом примере. Мы создадим контроллер, и при вызове определенного действия будет отправляться сообщение на почту.

Первым делом создаем компонент, в котором объявим наше событие, для этого в папке protected/components/ создайте файл "TestComponent.php" со следующим содержанием:

class TestComponent extends CComponent{
    //Текст сообщения
    public $message = 'Test Message';
    
    //Объявляем событие onTestrun
    public function onTestrun($event)
    {
        $this->raiseEvent('onTestrun', $event);
    } 
}

Затем создадим файл контроллера в protected/controllers под названием "TestController.php" со следующим содержимым:

class TestController extends Controller
{
    public function actionIndex()
    {
        //Создаем объект класса нашего компонента
        $sob = new TestComponent;
        
        //Привязываем к событию обработчик (метод myhandler())
        $sob->onTestrun = array($this, 'myhandler');
        
        //Если событие определено
        if($sob->hasEvent('onTestrun'))
            //Вызываем его
            $sob->onTestrun(new CEvent($event));
        
        $this->render('index');
    }
    
    //Обработчик события
    public function myhandler($event)
    {
        //отправляем письмо на почту
        $obj = new TestComponent;
        $mail = $obj->message;
        
        mail('email@mysite.ru', 'Mail header', $mail);  
    }
}

Суть нашего примитивного события такова, -  когда пользователь вызывает наше действие “index” в контроллере “Test”, на почту отправляется письмо.

image

Комментарии

probytes 06.01.14

Hi,
Very Nice article. I also agree with you that Yii is a fast, secure, high performance PHP framework for developing web 2.0 applications. That’s why Yii Development is top class, affordable and offer several features to build unique and quality applications.

AlexS 06.01.14

Еще одного веб-мастера засасывает в черную дыру под назвадением Yii

admin 08.01.14

С Drupal пока не собираюсь завязывать, Yii скорее для общего развития осваиваю, перед восьмеркой в ООП потренироваться, хотя как получится. Вообще неясность даты выхода 8го немного сбила с курса, не стал API семерки изучать, думал в сентябре выйдет новая версия.

s600 15.01.14

а как определить событие выхода из приложения штоб обработать данные сессии ?

SanSan 23.01.14

использовать событие onEndRequest, которое в жизненном цикле приложения срабатывает в конце

Комментировать