Lynda 假设有一个系统服务,有几个模块需要使用服务,组件可以订阅这个服务或消息,通过系统广播通知所有的模块。 无 ?php// 订阅发布模式 接口的定义及消息的传递class Dispatcher{ // 监视public static $listeners = array();protected function __constru
Lynda
假设有一个系统服务,有几个模块需要使用服务,组件可以订阅这个服务或消息,通过系统广播通知所有的模块。
<?php // 订阅发布模式 接口的定义及消息的传递 class Dispatcher { // 监视 public static $listeners = array(); protected function __construct(){} // 订阅服务 public static function subscribe($object, $subscribe) { $id = spl_object_hash($object); self::$listeners[$id][] = $subscribe; } // 广播消息 public static function publish($object) { $id = spl_object_hash($object); foreach (self::$listeners[$id] as $subscriber) { //var_dump($subscriber); $subscriber->doSomething(); } } } class Service { protected $name = ''; public function __construct($name) { $this->name = $name; } // 触发动作 public function doSomething() { echo sprintf("%s has something happened.\n", $this->name); Dispatcher::publish($this); } } class Component { protected $name = ''; public function __construct($name) { $this->name = $name; } public function doSomething() { echo sprintf("%s did something.\n", $this->name); } } $serviceA = new Service("ServiceA"); $componentA = new Component("componentA"); $componentB = new Component("componentB"); $componentC = new Component("componentC"); Dispatcher::subscribe($serviceA, $componentA); Dispatcher::subscribe($serviceA, $componentB); Dispatcher::subscribe($serviceA, $componentC); // 触发一个动作 $serviceA->doSomething(); // output //ServiceA something happened. //componentA did something. //componentB did something. //componentC did something.
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사
어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션
4 몇 주 전ByDDD
Windows 11 KB5054979의 새로운 기능 및 업데이트 문제를 해결하는 방법
3 몇 주 전ByDDD
Atomfall에서 크레인 제어 키 카드를 찾을 수 있습니다
4 몇 주 전ByDDD
<s> : 데드 레일 - 모든 도전을 완료하는 방법
1 몇 달 전ByDDD
Atomfall Guide : 항목 위치, 퀘스트 가이드 및 팁
1 몇 달 전ByDDD

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

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

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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