private static function getProxyClassDefinition($name, $className)
{
$class = new ReflectionClass($className);
$relation = $class->isInterface() ? 'implements' : 'extends';
$code = "class {$name} {$relation} {$className} { public \$_methodHandler;\n";
$code .= "function __construct(\$methodHandler) { \$this->_methodHandler = \$methodHandler; }\n";
foreach (self::getClassMethods($class) as $method) {
$params = self::getParameterDeclaration($method);
$modifier = $method->isStatic() ? 'static' : '';
$code .= "{$modifier} function {$method->name}({$params}) { return call_user_func_array(array(\$this->_methodHandler, __FUNCTION__), func_get_args()); }\n";
}
$code .= '}';
return $code;
}