7

내 코드베이스 (맞춤 PHP 라이브러리)에 이벤트 디스패처를 통합해야하므로 Symfony2Zend Framework 2 모두 무엇을하고 있는지 살펴 보았습니다.이벤트 디스패처를 PHP 라이브러리에 통합하는 가장 좋은 방법은 무엇입니까?

분명히, 두 프레임 워크가 서로 다른 요구를 가지고 있으며 자체 코드를 구현하기로 결정했기 때문에 이벤트를 디스패치하기위한 공유 인터페이스가 없습니다 ... 그래서 약간 분실되었습니다. 개인 휠을 재발 명하고 싶지 않습니다.

아마 관찰자 패턴을 구현하기위한 SPL 인터페이스는 조금 순진하기 때문에 나는 당신에게 묻습니다. 당신은 무엇을 할 것입니까? 그것은 분명하지 않다 때문에

편집

... 난 개발자가 내 라이브러리에 주입시키는 기존 ED를 다시 사용하려고합니다.

Dispatcher가 포함 된 lib를 개발하고 라이브러리가 Symfony Bundle의 일부가 될 것이며 ZF 프로젝트에서 다시 사용된다고 가정 해 봅시다. Symfony 및 ZF 디스패처를 반드시 재사용하고 싶습니다. 너 자신의.

따라서 주류 라이브러리에 구현 된 기존 디스패처의 공유 인터페이스를 찾고 있었지만 해결책이없는 것처럼 들립니다.

답변

4

당신은 당신의 필요를위한 인터페이스를 정의 할 수 있습니다 알 수있는 문서이며, 각 프레임 워크에 대한 differents의 어댑터를 구현합니다.

+0

절름발이지만, 지금은 유일한 옵션으로 이동 nedd 것을 분명 :) – odino

+0

@odino Symfony2, ZF2, Aura, Fuel ...을 비교하는 다른 PSR을 시작하지 않는 이유는 ... 어쨌든 그것이 받아 들여지지 않을지 확실하지 않습니다. 기본 인터페이스 일 수도 있습니다. –

2

널리 사용되는 구성 요소 중 하나를 선택하는 첫 번째 본능은 갈 길이 멀다고 생각합니다.

두 가지 옵션은 내가 고려할 수있는 옵션입니다. 두 가지를 모두 살펴보고 자신에게 가장 적합하다고 생각되는 것을 선택해야합니다.

뻔뻔한 플러그 : 정말로 가벼운 것을 원하는 경우 Événement을 살펴볼 수 있습니다.

2

PHP 인터페이스 SplObserver, SplSubject를 구현하여 옵저버 패턴을 구현해야합니다. Zend뿐만 아니라 Symphony는 후크를 지원하기 위해이를 수행하지만 일반적으로 모든 이벤트 발송자는 관찰자 패턴을 구현하여 이러한 방식으로 작동합니다. 여기

http://devzone.zend.com/article/4284

+1

안녕 OSL, 질문의 포인트는 사용할 패턴 아닌 편집 살펴보고, 당신이 관찰자 ;-) – odino

1

이미 받아 들여지는 오래된 게시물이지만 PHP에서 EDP 솔루션을 사용하는 사람들을위한 해결책이 있습니다. 자신의 어떤 인터페이스 또는 라이브러리를 사용하는 확장 필요 클래스,하지 않고 단순히 이벤트 디스패치를 ​​처리하기 위해 일반적인 PHP 함수를 호출로

http://prggmr.org

기능은 심포니의 젠드의 구현보다 훨씬 다릅니다.

// Subscribe to dispatched events 
subscribe(callback, signal) 

// Dispatch an event 
fire(signal)