>PHP 프레임워크 >YII >yii2.0에서 이벤트를 바인딩하는 방법

yii2.0에서 이벤트를 바인딩하는 방법

王林
王林원래의
2020-02-17 14:20:422335검색

yii2.0에서 이벤트를 바인딩하는 방법

yii2에서는 이벤트 바인딩이 yiibaseComponent의 on 메소드를 통해 작동됩니다. 이벤트를 정의할 때 콜백 함수를 바인딩해야 합니다.

예제를 살펴보세요. 먼저 컨트롤러를 작성하고 on을 사용하여 이벤트를 바인딩한 다음 인덱스 메서드에 액세스한 후 triggle을 사용하여

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);
    }
}

을 호출하여 결과를 가져옵니다. 이벤트. 컨트롤러에 들어가면 'event'에 시간이 바인딩되어 있습니다. on의 첫 번째 매개변수는 이벤트 이름을 나타내며(상수여야 함) 두 번째 매개변수는 이 이벤트의 콜백 함수입니다.

(권장 튜토리얼: yii Framework)

은 다음과 같은 방법으로도 작성할 수 있습니다.

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);
    }
}

$ 이는 이 객체를 의미하며 'onTest'는 실행 방법을 나타냅니다. 이벤트가 바인딩된 후에도 호출되지 않으면 여전히 쓸모가 없습니다. 이때 yiibaseComponent 클래스의 triggle 메서드를 사용하여 호출합니다.

이벤트 확장 적용(매개변수 전달 방식)

먼저 컨트롤러를 정의하고 내부에서 정의하고 호출합니다. 다른 매개변수를 입력하려면 yiibaseEvent 클래스를 사용해야 합니다

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에는 호출 방법이 포함되어 있습니다

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'

    }
}

더 많은 프로그래밍 관련 콘텐츠를 보려면 PHP 중국어 웹사이트를 방문하세요# 🎜🎜#programmingtutorial 칼럼!

위 내용은 yii2.0에서 이벤트를 바인딩하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.