/** * Magic __call * * @param string $name name * @param array $args arguments * * @return mixed */ public function __call($name, $args) { $map = array('settings' => array(false, array(self::$settings, 'get')), 'on' => array(false, array($this->event, 'on')), 'off' => array(true, array($this->event, 'off')), 'bind' => array(false, array($this->event, 'bind')), 'unbind' => array(true, array($this->event, 'unbind')), 'fire' => array(true, array($this->event, 'fire')), 'preventParentEvent' => array(true, array($this->event, 'preventParentEvent')), 'rule' => array(true, '\\Ant\\Parser::rule'), 'share' => array(true, '\\Ant\\Fn::share'), 'register' => array(true, array(self::$plugin, 'register')), 'activate' => array(true, array(self::$plugin, 'activate')), 'isActivated' => array(false, array(self::$plugin, 'isActivated')), 'deactivate' => array(true, array(self::$plugin, 'deactivate')), 'unregister' => array(true, array(self::$plugin, 'unregister')), 'fromFile' => array(true, array($this->render, 'fromFile')), 'fromString' => array(true, array($this->render, 'fromString')), 'has' => array(false, array($this->render, 'has')), 'logic' => array(true, array($this->render, 'logic')), 'get' => array(true, array($this->render, 'get')), 'assign' => array(true, array($this->render, 'assign')), 'draw' => array(false, array($this->render, 'draw'))); if (array_key_exists($name, $map)) { $callres = call_user_func_array($map[$name][1], $args); return true === $map[$name][0] ? $this : $callres; } else { if (method_exists('\\Ant\\Fn', $name) or Fn::isShared($name)) { return call_user_func_array('\\Ant\\Fn::' . $name, $args); } else { throw new Exception(sprintf('Undeclared method \\Ant\\Ant::%s', $name)); } } }