public
Description:
Homepage: http://weierophinney.net/phly/
Clone URL: git://github.com/weierophinney/phly.git
commit  0880e3d6ae0840f9913936e2e7c000e482d83b10
tree    7ef236e188c6dad14be94830229cc5b8d0a00140
parent  cbe7493b9d92fa08a3af70ec18dce9af62289426
phly / Phly_PubSub
name age message
..
file README Sat Dec 13 07:21:17 -0800 2008 Added Phly_PubSub to repository [weierophinney]
directory library/ Loading commit data...
directory tests/ Wed Dec 17 16:11:40 -0800 2008 Added Provider tests to test suite [weierophinney]
Phly_PubSub/README
Phly_PubSub: Publish-Subscribe framework for PHP
================================================

Phly_PubSub is a simple, flexible Publish-Subscribe framework for PHP, 
based on Dojo's dojo.publish/dojo.subscribe system.

With Phly_PubSub, you may register any callback to listen on any topic, 
as well as publish notifications to any topic from any location. As an 
example:

    // Create logger and subscribe to 'log' topic
    $log = new Zend_Log(new Zend_Log_Writer_Stream('/tmp/app.log'));
    Phly_PubSub::subscribe('log', $log, 'info');

    // Within some application code:
    Phly_PubSub::publish('log', 'Log message');

Phly_PubSub can therefore be used: 

* to ensure a separation of concerns
* as a minimal Aspect-Oriented Programming (AOP) mechanism for PHP
* to provide an opt-in subject/observer mechanism for your code without
  requiring refactoring

TODO/Further Questions
======================
* Exception handling. Should exceptions raised by subscribers prevent 
  execution of other subscribers and/or the calling code?
  * If not, how should errors be handled/aggregated/reported?
* Should return values from subscribers be allowed? If so, how would they be
  handled?
  * Use case would be to allow early escape from a method based on the return
    value of a subscriber