proxied, $method)) { $continue = true; $result = null; if (isset($this->beforeCall[$method])) { $methods = $this->beforeCall[$method]; if (!is_array($methods)) { $methods = array($methods); } foreach ($methods as $handler) { $alternateReturn = null; $proceed = $handler->beforeCall($this->proxied, $method, $args, $alternateReturn); if ($proceed === false) { $continue = false; // if something is set in, use it if ($alternateReturn) { $result = $alternateReturn; } } } } if ($continue) { $result = call_user_func_array(array($this->proxied, $method), $args); if (isset($this->afterCall[$method])) { $methods = $this->afterCall[$method]; if (!is_array($methods)) { $methods = array($methods); } foreach ($methods as $handler) { $return = $handler->afterCall($this->proxied, $method, $args, $result); if (!is_null($return)) { $result = $return; } } } } return $result; } } }