martes, 25 de septiembre de 2012

Observe Your Object

    <?php
    class Log
    {
      public function message( $sender, $messageType, $data )
      {
        print $messageType." - ".$data."\n";
      }
    }
    class SubscriptionList
    {
      var $list = array();
      public function add( $obj, $method )
    {
        $this->list []= array( $obj, $method );
    }
    public function invoke()
    {
      $args = func_get_args();
      foreach( $this->list as $l ) { call_user_func_array( $l, $args ); }
    }
  }
  class CustomerList
  {
    public $listeners;
    public function CustomerList()
    {
      $this->listeners = new SubscriptionList();
    }
    public function addUser( $user )
    {
      $this->listeners->invoke( $this, "add", "$user" );
    }
  }
  $l = new Log();
  $cl = new CustomerList();
  $cl->listeners->add( $l, 'message' );
  $cl->addUser( "starbuck" );
  ?>

No hay comentarios:

Publicar un comentario