Ejemplo n.º 1
0
 public static function run()
 {
     $request = new Request($_SERVER['QUERY_PATH']);
     $response = new Response();
     $router = new Router($request);
     $callable = $router->route();
     $input = new RequestBuilder($request);
     $output = new ResponseBuilder();
     MiddlewareManager::getInstance()->before($input, $output, $callable);
     $return = FrontController::getInstance()->setController($callable->controller)->setAction($callable->action)->setParams($input, $output)->exec();
     if ($return instanceof ResponseBuilder) {
         $output = $return;
     } else {
         $output->body = $return;
     }
     MiddlewareManager::getInstance()->after($input, $output, $callable);
     $response->send($output);
 }
Ejemplo n.º 2
0
 private function resolve(array $source, RequestBuilder &$req, ResponseBuilder &$res, \stdClass &$call)
 {
     if ($source) {
         foreach ($source as $mwobject) {
             $class = '\\olifant\\middleware\\' . $mwobject;
             $middle = new $class();
             $instance = '\\olifant\\middleware\\MiddlewareBase';
             if (false === is_subclass_of($middle, $instance)) {
                 throw new AppException('Class ' . $class . ' is not instanceof ' . $instance);
             }
             if (isset($middle->path) or isset($middle->exceptPath)) {
                 $uri = rawurldecode(Request::cleanUri($req->path));
                 $mode = isset($middle->path) ? false : (isset($middle->exceptPath) ? true : false);
                 $target = isset($middle->path) ? $middle->path : (isset($middle->exceptPath) ? $middle->exceptPath : null);
                 if (is_array($target)) {
                     $match = false;
                     foreach ($target as $p) {
                         if (Router::compare($p, $uri)) {
                             $match = true;
                             break;
                         }
                     }
                     if ($mode === $match) {
                         continue;
                     }
                 } else {
                     if ($mode === Router::compare($target, $uri)) {
                         continue;
                     }
                 }
             }
             call_user_func_array(array($middle, 'handle'), array($req, $res, $call));
         }
     }
     return $this;
 }