이벤트 메커니즘을 구현하는 방법에는 모니터링과 구독을 통한 두 가지가 있습니다.
1. 모니터링을 통해
1 청취 클래스 생성: 명령줄 모드에서 프레임워크 루트 디렉터리에 들어가
php를 실행합니다. make:listener
예:
php make:listener UserListener
가 실행 후 app
listener下生成
UserListener 클래스에 있을 것이라고 생각하세요.
2. 청취 구성: appevent.php 파일의 청취 배열에서 다음과 같이 UserListener 클래스를 구성합니다.
3. 청취 트리거: 청취를 트리거해야 하는 곳에 다음 코드를 추가하세요'listen' => applistenerUserListener']
],
event('testEvent');참고: 여기에서 testEvent 매개변수는 마음대로 정의할 수 있는 이벤트 이름이지만 event.php와 동일 파일에 구성된 키 이름은 일관됩니다. 모니터링을 실행할 때 두 번째 매개변수를 가져올 수 있습니다. 핸들 메소드의 매개변수인 두 번째 매개변수를 통해 UserListener 클래스에 어떤 데이터든 전달할 수 있습니다. (무엇을 의미하는지 이해하지 못하는 경우 아래 전체 코드를 통해 이해하시기 바랍니다.) 4. 듣기 로직 처리: UserListener 클래스의 핸들 메소드에서 비즈니스 로직 완성 전체 코드는 다음과 같습니다. Other: 테스트에 사용되는 클래스
<?php namespace app\controller; class Other { public function hello() { echo 'hello function'; } }Index: 듣기를 트리거하는 클래스
UserListener: 이벤트 청취 클래스<?php namespace app\listener; class UserListener { /** * 事件监听处理 * * @return mixed */ public function handle($event) { //当调用Index类的test1方法时该代码有效,$event为null var_dump($event); //当调用Index类的test2方法时该代码有效,$event为字符串hello var_dump($event); //当调用Index类的test3方法时该代码有效,$event为Index类的实例 //可以访问Index类的name变量 echo $event->name; //当调用Index类的test4方法时该代码有效,$event为Other类的实例 //可以调用Other类的hello方法 echo $event->hello(); } }2. 구독을 통해1. 구독 클래스를 생성합니다실행하려면 명령줄 모드에서 프레임워크 루트 디렉토리를 입력하세요.php make:subscribe예:php think make:subscribe UserSubscribe실행 후 UserSubscribe 클래스는 appsubscribe 아래에 생성됩니다. 2. 모니터링 구성appevent.php 파일의 구독 배열에서 UserSubscribe 클래스를 다음과 같이 구성합니다.'subscribe' => ['appsubscribeUserSubscribe'],참고: 효과를 테스트하려면 위에서 구성한 UserListener를 Listen 배열에서 삭제해야 합니다3. Trigger listening첫 번째 방법과 동일4. Listening 로직을 처리하는 방법에는 두 가지가 있습니다. 이것을 자동 바인딩과 수동 바인딩이라고 부릅니다. 수동 바인딩과 자동 바인딩은 상호 배타적이므로 둘 중 하나만 선택할 수 있습니다. 4.1 자동 바인딩비즈니스 로직을 완성하는 ontestEvent 메소드를 UserSubscribe 클래스에 추가해야 합니다. 추가되는 메소드 이름은 임의로 정의할 수 없으며, 이벤트 이름 앞에 추가하는 것을 원칙으로 합니다. event.php에서 정의한 이벤트 이름이 testEvent이므로 메소드 이름은 ontestEvent입니다(대소문자 주의). Listening 메서드를 정의한 후에는 자동으로 이벤트에 바인딩되므로 자동 바인딩이라고 합니다. 전체 코드는 다음과 같습니다Other 및 Index 클래스의 코드는 첫 번째 접근 방식과 동일합니다.UserSubscribe: 이벤트 구독 클래스<?php namespace app\subscribe; class UserSubscribe { public function ontestEvent($user) { //当调用Index类的test1方法时该代码有效,$event为null var_dump($user); //当调用Index类的test2方法时该代码有效,$event为字符串hello var_dump($user); //当调用Index类的test3方法时该代码有效,$event为Index类的实例 //可以访问Index类的name变量 echo $user->name; //当调用Index类的test4方法时该代码有效,$event为Other类的实例 //可以调用Other类的hello方法 echo $user->hello(); } }4.2 수동 바인딩먼저 처리를 담당하는 이벤트 클래스를 만듭니다. 특정 비즈니스 로직. 명령줄 모드에서 프레임워크 루트 디렉터리를 입력하고 실행합니다.php think make:event
예:
php think make:event UserEvent
그런 다음 이 클래스에 들어오는 매개변수가 있는 핸들 메서드를 정의합니다. 메소드 이름과 전달되는 매개변수 이름은 임의로 정의할 수 있습니다. 특정 비즈니스 로직은 핸들 메소드에서 처리될 수 있습니다. 다음으로, Event 개체를 매개변수로 받아야 하는 구독 메서드를 UserSubscribe 클래스에 추가합니다. 그런 다음 이벤트 리스너를 이 함수에 있는 UserEvent 클래스의 핸들 메서드에 바인딩합니다.실행 후 < ;The UserEvent 클래스는 프레임워크 루트 디렉터리>appevent 아래에 생성됩니다.
$event->listen('testEvent', [app('app\event\UserEvent'), 'handle']);전체 코드는 다음과 같습니다Other 및 Index 클래스의 코드는 첫 번째 접근 방식과 동일합니다.UserSubscribe: 이벤트 구독 클래스UserEvent: 이벤트 처리 클래스<?php declare (strict_types = 1); namespace app\event; class UserEvent { public function handle($user) { //当调用Index类的test1方法时该代码有效,$user为null var_dump($user); //当调用Index类的test2方法时该代码有效,$user为字符串hello var_dump($user); //当调用Index类的test3方法时该代码有效,$user为Index类的实例 //可以访问Index类的name变量 echo $user->name; //当调用Index类的test4方法时该代码有效,$user为Other类的实例 //可以调用Other类的hello方法 echo $user->hello(); } }위 내용은 Thinkphp 이벤트 메커니즘을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사는 ThinkPhp의 내장 테스트 프레임 워크에 대해 논의하여 장치 및 통합 테스트와 같은 주요 기능과 조기 버그 감지 및 개선 된 코드 품질을 통해 응용 프로그램 신뢰성을 향상시키는 방법을 강조합니다.

기사는 실시간 주식 시장 데이터 피드에 ThinkPHP를 사용하여 설정, 데이터 정확도, 최적화 및 보안 측정에 중점을 둡니다.

이 기사는 서버리스 아키텍처에서 ThinkPHP를 사용하기위한 주요 고려 사항에 대해 설명하고 성능 최적화, 무국적 설계 및 보안에 중점을 둡니다. 비용 효율성 및 확장 성과 같은 혜택을 강조하고 도전 과제를 해결합니다.

이 기사에서는 ThinkPHP 마이크로 서비스에서 서비스 검색 및로드 밸런싱 구현, 설정, 모범 사례, 통합 방법 및 권장 도구에 중점을 둡니다. [159 문자]

ThinkPhp의 IOC 컨테이너는 PHP apps.character 수 : 159의 효율적인 종속성 관리를위한 게으른 하중, 맥락 바인딩 및 메소드 주입과 같은 고급 기능을 제공합니다.

이 기사는 ThinkPhp를 사용하여 실시간 협업 도구를 구축하고 설정, WebSocket 통합 및 보안 모범 사례에 중점을 둡니다.

ThinkPhp는 가벼운 디자인, MVC 아키텍처 및 확장 성을 통해 SaaS 앱에 혜택을줍니다. 다양한 기능을 통해 확장 성을 향상시키고 개발 속도를 높이며 보안을 향상시킵니다.

이 기사는 설치, 구성, 작업 관리 및 확장성에 중점을 둔 ThinkPhp 및 RabbitMQ를 사용하여 분산 작업 큐 시스템을 구축합니다. 주요 문제는 고 가용성 보장, 손상과 같은 일반적인 함정을 피하는 것입니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

드림위버 CS6
시각적 웹 개발 도구

뜨거운 주제



