Пример #1
0
 function &super($arguments = null)
 {
     $arguments = func_get_args();
     $caller = array_pop(array_slice(debug_backtrace(), 1, 1));
     if (empty($caller)) {
         trigger_error($this->class . '::super() must be called from inside of an instance method', E_USER_ERROR);
     } else {
         $methods =& call_class_method($this->class, 'methods');
         $aliases = call_class_method($this->class, 'aliases');
         $method = $caller['function'];
         foreach (array_reverse($aliases) as $alias) {
             if ($alias[1] == $method) {
                 $method = $alias[0];
                 break;
             }
         }
         if (isset($methods[$method]) && !empty($methods[$method])) {
             $callee = array_shift($methods[$method]);
             $result =& $this->send_array($method, $arguments);
             array_unshift($methods[$method], $callee);
         } else {
             eval('$result = &' . build_function_call(array(get_parent_class($this), $method), $arguments) . ';');
         }
         return $result;
     }
 }
Пример #2
0
 static function new_instance_array($arguments = array())
 {
     eval('$instance = ' . build_function_call('new ' . get_called_class(), $arguments) . ';');
     return $instance;
 }