Heim  >  Artikel  >  PHP-Framework  >  So binden Sie Ereignisse in yii2.0

So binden Sie Ereignisse in yii2.0

王林
王林Original
2020-02-17 14:20:422300Durchsuche

So binden Sie Ereignisse in yii2.0

In yii2 wird die Ereignisbindung über die on-Methode von yiibaseComponent durchgeführt. Wenn wir das Ereignis definieren, müssen wir eine Rückruffunktion daran binden.

Schauen Sie sich zuerst das Beispiel an, verwenden Sie on, um das Ereignis zu binden, und rufen Sie dann mit triggle in der Methode

namespace backend\controllers;

use yii\web\Controller;

class EventController extends Controller
{
   const TEST_EVENT = 'event';

    public function init()
    {
        parent::init();
        $this->on(self::TEST_EVENT,function(){echo '这个一个事件测试。。。';});
    }


    public function actionIndex()
    {
        $this->trigger(self::TEST_EVENT);
    }
}

auf, um auf die Indexmethode zuzugreifen und das Ergebnis zu erhalten Ereignis. Beim Betreten des Controllers ist eine Zeit an „Ereignis“ gebunden. Der erste Parameter von on stellt den Ereignisnamen dar (muss eine Konstante sein) und der zweite Parameter ist die Rückruffunktion dieses Ereignisses.

(Empfohlenes Tutorial: yii-Framework )

kann auch folgendermaßen geschrieben werden:

namespace backend\controllers;

use yii\web\Controller;

class EventController extends Controller
{
   const TEST_EVENT = 'event';

    public function init()
    {
        parent::init();
        $this->on(self::TEST_EVENT,[$this,'onTest']);
    }


    public function onTest()
    {
        echo '这个一个事件测试。。。';
    }

    public function actionIndex()
    {
        $this->trigger(self::TEST_EVENT);
    }
}

$this repräsentiert dieses Objekt, „onTest“ Bezieht sich auf die Ausführungsmethode. Nachdem das Ereignis gebunden ist, ist es immer noch nutzlos, wenn es nicht aufgerufen wird. Zu diesem Zeitpunkt wird die Triggle-Methode in der yiibaseComponent-Klasse zum Aufrufen verwendet.

Erweiterte Anwendung von Ereignissen (Parameterübergabemethode)

Definieren Sie zunächst einen Controller und definieren und rufen Sie ihn auf. Wenn Sie verschiedene Parameter übergeben möchten, müssen Sie das yiibaseEvent Klasse wird verwendet

class EventController extends Controller
{
    const TEST_USER = 'email'; //发送邮件
    public function init()
    {
        parent::init();
        $msg = new Msg();
        $this->on(self::TEST_USER,[$msg,'Ontest'],'参数Test');  
    }
    public function actionTest()
    {
        $msgEvent = new MsgEvent();
        $msgEvent->dateTime = 'Test时间';
        $msgEvent->author = 'Test作者';
        $msgEvent->content = 'Test内容';
        $this->trigger(self::TEST_USER,$msgEvent);
    }
}
class MsgEvent extends Event
{
    public $dateTime;   // 时间
    public $author;     // 作者
    public $content;    // 内容

}

msg enthält die aufrufende Methode

class Msg extends ActiveRecord
{
    public function onTest($event) //$event是yii\base\Event的对象
    {
        print_r($event->author);//输出'Test作者'
        print_r($event->dateTime);//输出'Test时间'
        print_r($event->content);//输出'Test内容'
        print_r($event->data);//输出'参数Test'

    }
}

Weitere programmierbezogene Inhalte finden Sie in der Spalte Programmier-Tutorial auf der chinesischen PHP-Website!

Das obige ist der detaillierte Inhalt vonSo binden Sie Ereignisse in yii2.0. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn