<?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=