7

Muszę zintegrować program rozsyłający zdarzenia w mojej własnej bazie kodów (niestandardowej bibliotece PHP), więc przyjrzałem się, co robią zarówno Symfony2, jak i Zend Framework 2.Jaki jest najlepszy sposób integracji dispatchera zdarzeń w bibliotece PHP?

Oczywiście, nie ma współdzielonego interfejsu do wysyłania zdarzeń, ponieważ obie struktury mają różne potrzeby i zdecydowały się na wdrożenie własnego kodu ... więc jestem trochę zagubiony: nie chcę wymyślać na nowo mojego osobistego koła.

Prawdopodobnie interfejsy SPL do implementacji wzorca obserwatora są nieco naiwne, więc pytam: co byś zrobił?

EDIT

Ponieważ nie jest jasne ... Chcę, aby ponownie użyć istniejącej ED, pozwalając deweloper wstrzyknąć go w mojej bibliotece.

Załóżmy, że tworzysz bibliotekę z programem rozsyłającym i wiesz, że twoja biblioteka będzie częścią pakietu Symfony, a także ponownie używana w projektach ZF: na pewno chcesz ponownie użyć programów rozsyłających Symfony i ZF. Twój własny.

Dlatego szukałem wspólnych interfejsów dla istniejących dyspozytorów wdrażanych w głównych bibliotekach, ale brzmi to tak, jakby nie było rozwiązania.

Odpowiedz

4

Można zdefiniować interfejs do swoich potrzeb, a następnie realizuje ją zróżnicowanych adapterami do każdej ramy.

+0

lame, ale jedyną opcją teraz :) – odino

+0

@odino, czemu nie zacząć kolejnego PSR porównując Symfony2, ZF2, Aurę, Paliwa ... i kto jeszcze ... W każdym razie nie jestem pewny czy zostanie zaakceptowany czy nie. Może to być tylko interfejs podstawowy. –

2

Moim pierwszym instynktem do wyboru jednego z powszechnie używanych komponentów jest droga.

Te dwie opcje również rozważam. Powinieneś po prostu przyjrzeć się ich obu i wybrać ten, który uważasz za najlepszy dla ciebie.

Bezwstydna wtyczka: jeśli chcesz czegoś naprawdę, naprawdę lekkiego, możesz spojrzeć na Événement.

2

Musisz zaimplementować wzór obserwatora poprzez implementację interfejsu PHP SplObserver, SplSubject. Nie tylko Zend, Symphony robi to w celu obsługi haków, ale ogólnie każdy dyspozytor zdarzeń działa w ten sposób, implementując wzór obserwatora.

Oto artykuł, aby dowiedzieć się więcej http://devzone.zend.com/article/4284

+1

Hi OSL, przyjrzeć się tej edycji, punkt pytanie, które nie jest wzór do wykorzystania, to jest oczywiste, że nedd iść z obserwatorem ;-) – odino

1

Stary post, który został już zaakceptowany, ale istnieje rozwiązanie dla kropli w rozwiązaniu EDP w PHP dla tych, którzy natknęli się na to tak jak ja.

http://prggmr.org

Funkcjonalność jest znacznie inna niż Symfony i realizacji Zend jako ich jest bez interfejsu lub klasy, które muszą biegnące do korzystania z biblioteki, raczej po prostu zadzwonić do typowych funkcji php do obsługi do zdarzenia wysyłającego.

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

// Dispatch an event 
fire(signal)