Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Events in Zend Framework application

I'm looking for a reference to a good implementation of event driven architecture based on Zend Framework. Could you share your experience in this topic?

I've found two solutions, but haven't used them yet:

  • http://framework.zend.com/wiki/display/ZFPROP/Zend_Event+-+Alvar+Vilu
  • http://components.symfony-project.org/event-dispatcher/

Edit:

Example:

  • http://www.slideshare.net/beberlei/towards-the-cloud-eventdriven-architectures-in-php
like image 393
takeshin Avatar asked Apr 30 '11 13:04

takeshin


1 Answers

I don't have much practical experience in this topic, but since no one else seems to be replying, I suppose I'll share what I think of this...

This is perhaps a bit tricky thing in PHP apps, since they typically only run for the duration of a request, so the benefit of being able to subscribe and listen to generic events during that short phase may not be very large.

However, I think there can be some benefits in allowing you to decouple your code more.

From what I can tell, the Symfony dispatcher looks better - mainly because it looks simpler.

I've used a sort of dojo pubsub type system myself: Basically you have an event publisher, to which classes can publish events. This is a sort of global event handling, where you don't specifically subscribe to the class itself - instead you subscribe to a specific event, and it doesn't matter what class publishes the event.

The benefits of this vs. subscribing to a specific class is that the code is decoupled more: In my case, it's a ZF app, and classes which subscribe to events can simply do it in the bootstrap, vs. having to do subscriptions in controllers (or where ever the publishers are created)

The downside of this approach is that it can make dependencies between things harder to track. For example you only see an event publish call, but you have no idea what sort of things listen for it without digging further into the code.

In my case I don't really know if the application has got any benefits from using this architecture - in fact I've several times considered removing it entirely and just using the objects which listen to the events directly.

like image 93
Jani Hartikainen Avatar answered Sep 28 '22 17:09

Jani Hartikainen