public function __construct($request = null, $response = null, $options = array()) { $this->viewConfig(Config::merge(self::$view, static::$view, $options)); $this->request = $request ?: Action::request(); $this->response = $response ?: Action::response(); if (isset($this->viewConfig['type'])) { $this->response->type = $this->viewConfig['type']; } else { $this->viewConfig['type'] = $this->response->type; } }
/** * * @param array $config */ public static function bootstrap(array $config = []) { $defaults = ['debug' => false, 'app' => ['namespace' => 'App'], 'error' => []]; $params = compact('defaults', 'config'); return static::filterStaticMethod(__FUNCTION__, $params, function ($self, $params) { extract($params); $config = Config::merge($defaults, $config); Config::set(null, $config); $self::provide(Config::get('App.namespace')); }); }
public static function dispatch() { $request = static::request(); static::filterStaticMethod(__FUNCTION__, compact('request'), function ($self, $params) { extract($params); $filterParams = []; foreach ($self::$_dispatchFilters as $pattern => $filter) { if (preg_match($pattern, $request->url, $params)) { if (is_callable($filter)) { if ($_filterParams = call_user_func($filter, $request, $filterParams)) { $_filterParams = Config::merge($filterParams, $filter); } } else { $filterParams = Config::merge($filterParams, $filter); array_map(function ($v, $k) use(&$filterParams) { if (is_string($k)) { $filterParams[$k] = $v; } }, $params, array_keys($params)); } } } $request->params = Config::merge($request->params, $filterParams); if (!($routeParams = $self::match($request, $filterParams))) { $message = 'Cannot route request'; throw new NotFoundException($message); } $request->params = Config::merge($request->params, $routeParams); $self::$requests[] = $request; }); return static::call($request); }