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

WBOY
풀어 주다: 2022-04-13 21:04:32
앞으로
3575명이 탐색했습니다.

이 기사에서는 이벤트 바인딩, 모니터링 및 구독과 관련된 문제를 주로 소개하는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

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


        
로그인 후 복사

2. 이벤트 구독

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

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으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!