counter += 1; return $this; } } $factory = new AccessInterceptorScopeLocalizerFactory(); $foo = new FluentCounter(); /* @var $proxy FluentCounter */ $proxy = $factory->createProxy( $foo, array('fluentMethod' => function ($proxy) { echo "pre-fluentMethod #{$proxy->counter}!\n"; }), array('fluentMethod' => function ($proxy) { echo "post-fluentMethod #{$proxy->counter}!\n"; }) ); $proxy->fluentMethod()->fluentMethod()->fluentMethod()->fluentMethod(); echo 'The proxy counter is now at ' . $proxy->counter . "\n"; echo 'The real instance counter is now at ' . $foo->counter . "\n";