Пример #1
0
 /**
  * Creates a Method which, when called, will delegate to a given instance variable
  */
 public static function create_delegate_for_reflection(\ReflectionMethod $method, $variable)
 {
     $method_name = $method->getName();
     $m = new Method($method_name);
     $m->set_arg_list(ArgumentList::create_from_reflection_method($method));
     if ($method->returnsReference()) {
         $m->set_reference_returned(true);
     }
     if ($method->isPublic()) {
         $m->set_access_public();
     } elseif ($method->isProtected()) {
         $m->set_access_protected();
     } elseif ($method->isPrivate()) {
         $m->set_access_private();
     }
     $body = '
         return call_user_func_array(
             array($this->' . $variable . ', "' . $method_name . '"),
             func_get_args()
         );
     ';
     $m->set_body(trim(preg_replace('/\\s+/', ' ', $body)));
     return $m;
 }