/** * Provides access to ExtensibleObject's methods. * @param string $name * @param array $args * @return mixed */ public function __call($name, $args) { if ($this->objectReflection->hasMethod($name) && ($method = $this->objectReflection->getMethod($name)) && $method->isProtected()) { $method->setAccessible(TRUE); return $method->invokeArgs($this->object, $args); } else { return \callback($this->object, $name)->invokeArgs($args); } }