<?php
 
class decorator {
  protected $decoratee;
  function __construct( $object ) {
    $this->decoratee = $object;
  }
}
 
class test {
  function addObject( &$object ) {
    $object = $this->decorate( $object );
  }
  function addObjects
( array &$objects ) {     foreach( $objects as &$object ) {
      $this->addObject( $object );
    }
  }
  function decorate( $object ) {
    return new decorator( $object );
  }
}
 
$dec = new test;
$std = new StdClass;
$dec->addObjects( $a);
				PD9waHAKCmNsYXNzIGRlY29yYXRvciB7CiAgcHJvdGVjdGVkICRkZWNvcmF0ZWU7CiAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICRvYmplY3QgKSB7CiAgICAkdGhpcy0+ZGVjb3JhdGVlID0gJG9iamVjdDsKICB9Cn0KCmNsYXNzIHRlc3QgewogIGZ1bmN0aW9uIGFkZE9iamVjdCggJiRvYmplY3QgKSB7CiAgICAkb2JqZWN0ID0gJHRoaXMtPmRlY29yYXRlKCAkb2JqZWN0ICk7CiAgfQogIGZ1bmN0aW9uIGFkZE9iamVjdHMoIGFycmF5ICYkb2JqZWN0cyApIHsKICAgIGZvcmVhY2goICRvYmplY3RzIGFzICYkb2JqZWN0ICkgewogICAgICAkdGhpcy0+YWRkT2JqZWN0KCAkb2JqZWN0ICk7CiAgICB9CiAgfQogIGZ1bmN0aW9uIGRlY29yYXRlKCAkb2JqZWN0ICkgewogICAgcmV0dXJuIG5ldyBkZWNvcmF0b3IoICRvYmplY3QgKTsKICB9Cn0KCiRkZWMgPSBuZXcgdGVzdDsKJHN0ZCA9IG5ldyBTdGRDbGFzczsKJGEgPSBhcnJheSggJHN0ZCApOwokZGVjLT5hZGRPYmplY3RzKCAkYSk7CnByaW50X3IoICRzdGQgKTs=