>  기사  >  PHP 프레임워크  >  thinkphp의 이벤트 바인딩, 모니터링 및 구독을 완전히 마스터하세요.

thinkphp의 이벤트 바인딩, 모니터링 및 구독을 완전히 마스터하세요.

WBOY
WBOY앞으로
2022-04-13 12:56:383615검색

이 기사에서는 이벤트 바인딩, 모니터링 및 구독과 관련된 문제를 주로 소개하는 thinkphp에 대한 관련 지식을 제공합니다. 미들웨어에 비해 이벤트의 장점은 미들웨어보다 이벤트가 더 정확하게 배치된다는 것입니다. , 모두에게 도움이 되기를 바랍니다.

thinkphp의 이벤트 바인딩, 모니터링 및 구독을 완전히 마스터하세요.

추천 학습: "PHP 비디오 튜토리얼"

이벤트란 무엇입니까

미들웨어에 비해 이벤트의 장점은 이벤트가 미들웨어보다 더 정확하게 배치(또는 더 세부적으로)된다는 것입니다. 일부 비즈니스 시나리오에 적합한 확장입니다. 예를 들어, 우리는 일반적으로 등록 또는 로그인 후 일련의 작업을 수행해야 하는 사용자를 접하게 됩니다. 이벤트 시스템을 통해 원래 코드를 침해하지 않고 로그인 작업 확장을 완료할 수 있으며 비즈니스 요구를 충족시키면서 시스템의 결합을 줄일 수 있습니다. .

TP6의 이벤트 사용

공식 홈페이지에는 설명이 없지만 여기서는 사용 방법만 알려드리겠습니다

1. 이벤트 모니터링

  • 명령줄 생성 모니터링 php think make:listener UserLoginphp think make:listener UserLogin

一般建议直接在事件定义文件(event.php)中定义对应事件的监听。

return [
    'bind'    =>    [
        'UserLogin' => 'app\event\UserLogin',
        // 更多事件绑定
    ],
    'listen'  =>    [
        'UserLogin'    =>    ['app\listener\UserLogin'],
        // 更多事件监听
    ],
];

2.事件订阅

  • 命令行php think make:subscribe User
  • 일반적으로 이벤트 정의 파일(
event.php

)에서 해당 이벤트의 청취를 직접 정의하는 것이 좋습니다.

<?php
namespace app\subscribe;

class User
{
    public function onUserLogin($user)
    {
        // UserLogin事件响应处理
    }

    public function onUserLogout($user)
    {
        // UserLogout事件响应处理
    }
}

2. 이벤트 구독

명령줄 php think make:subscribe User appsubscribeUser 클래스는 기본적으로 생성되거나 생성할 전체 클래스 이름을 지정할 수 있습니다.

<?php
namespace app\subscribe;

use think\Event;

class User
{
    public function onUserLogin($user)
    {
        // UserLogin事件响应处理
    }

    public function onUserLogout($user)
    {
        // UserLogout事件响应处理
    }

    public function subscribe(Event $event)
    {
        $event->listen('UserLogin', [$this,'onUserLogin']);
        $event->listen('UserLogout',[$this,'onUserLogout']);
    }
}
3. 사용자 정의 구독
구독 방법(또는 방법 사양)을 사용자 정의하려는 경우 구독 방법 구현을 정의할 수 있습니다.
return [
    'bind'    =>    [
        'UserLogin' => 'app\event\UserLogin',
        // 更多事件绑定
    ],
    'listen'  =>    [
        'UserLogin'    =>    ['app\listener\UserLogin'],
        // 更多事件监听
    ],
    'subscribe'    =>    [
       'app\subscribe\User',
        // 更多事件订阅
    ],
];
🎜그런 다음 이벤트 정의 파일에 이벤트 구독자를 등록하세요🎜
// 触发UserLogin事件 用于执行用户登录后的一系列操作
Event::trigger('UserLogin');
或者使用助手函数
event('UserLogin');
🎜🎜이벤트가 트리거됩니다🎜🎜rrreee🎜추천 학습: "🎜PHP 비디오 튜토리얼🎜"🎜🎜

위 내용은 thinkphp의 이벤트 바인딩, 모니터링 및 구독을 완전히 마스터하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제