コード例 #1
0
ファイル: Application.php プロジェクト: dspbee/pivasic
 /**
  * Process request.
  *
  * @param array $languageList
  * @param array $packageList
  * @param array $routeClassList
  * @param null|string $url
  *
  * @return Response
  */
 public function run(array $languageList, array $packageList, array $routeClassList, $url = null) : Response
 {
     $request = new Request($languageList, $packageList, $url);
     $this->packageRoot .= $request->package() . '/';
     /**
      * Process request.
      */
     if (isset($routeClassList[$request->package()])) {
         /**
          * Custom routing.
          */
         /**
          * Path to router class.
          */
         $path = $this->packageRoot . $routeClassList[$request->package()] . '.php';
         if (file_exists($path)) {
             require $path;
             /**
              * Name of router class.
              */
             $route = $request->package() . '\\' . $routeClassList[$request->package()];
             /**
              * @var IRoute $route
              */
             $route = new $route();
             $response = $route->getResponse($this->packageRoot, $request);
             if (null !== $response) {
                 return $response;
             }
         } else {
             throw new \RuntimeException(sprintf('The file "%s" does not exist', $path));
         }
     }
     $response = (new DefaultRoute())->getResponse($this->packageRoot, $request);
     if (null !== $response) {
         return $response;
     }
     /**
      * If not found.
      */
     $response = new Response();
     $response->headerStatus(404);
     $content = '404 Not Found';
     if (file_exists($this->packageRoot . '/view/404.html.php')) {
         $content = (new Native($this->packageRoot))->getContent('404.html.php');
     }
     $response->setContent($content);
     return $response;
 }
コード例 #2
0
ファイル: RequestTest.php プロジェクト: dspbee/pivasic
 public function testRequestMakeUrl()
 {
     $_SERVER['HTTP_HOST'] = 'domain.com';
     $request = new Request();
     $this->assertEquals('/', $request->makeUrl());
     $this->assertEquals('/foo/bar', $request->makeUrl('foo/bar////'));
     $this->assertEquals('/foo/bar', $request->makeUrl('//foo/bar////'));
     $this->assertEquals('http://domain.com/', $request->makeUrl('', true));
     $this->assertEquals('http://domain.com/blog', $request->makeUrl('blog', true));
     $this->assertEquals('http://domain.com/foo/bar', $request->makeUrl('foo/bar////', true));
     $this->assertEquals('http://domain.com/foo/bar', $request->makeUrl('//foo/bar////', true));
     $request = new Request(['en', 'ru'], [], 'en');
     $this->assertEquals('/', $request->makeUrl('/'));
     $this->assertEquals('/foo/bar', $request->makeUrl('/foo/bar'));
     $this->assertEquals('http://domain.com/', $request->makeUrl('/', true));
     $this->assertEquals('http://domain.com/foo/bar', $request->makeUrl('/foo/bar', true));
     $request = new Request(['en', 'ru'], [], 'ru');
     $this->assertEquals('/ru', $request->makeUrl('/'));
     $this->assertEquals('/ru/foo/bar', $request->makeUrl('/foo/bar'));
     $this->assertEquals('http://domain.com/ru', $request->makeUrl('/', true));
     $this->assertEquals('http://domain.com/ru/foo/bar', $request->makeUrl('/foo/bar', true));
     $request = new Request(['en', 'ru'], ['Manage'], '/en/manage');
     $this->assertEquals('/manage', $request->makeUrl('/'));
     $this->assertEquals('/manage/foo/bar', $request->makeUrl('/foo/bar'));
     $this->assertEquals('http://domain.com/manage', $request->makeUrl('/', true));
     $this->assertEquals('http://domain.com/manage/foo/bar', $request->makeUrl('/foo/bar', true));
     $request = new Request(['en', 'ru'], ['Manage'], 'ru/manage//');
     $this->assertEquals('/ru/manage', $request->makeUrl('/'));
     $this->assertEquals('/ru/manage/foo/bar', $request->makeUrl('/foo/bar'));
     $this->assertEquals('http://domain.com/ru/manage', $request->makeUrl('/', true));
     $this->assertEquals('http://domain.com/ru/manage/foo/bar', $request->makeUrl('/foo/bar', true));
     $request = new Request(['en', 'ru'], ['Manage'], 'app.dev.php/en/manage');
     $this->assertEquals('/app.dev.php/manage', $request->makeUrl('/'));
     $this->assertEquals('/app.dev.php/manage/foo/bar', $request->makeUrl('/foo/bar'));
     $this->assertEquals('http://domain.com/app.dev.php/manage', $request->makeUrl('/', true));
     $this->assertEquals('http://domain.com/app.dev.php/manage/foo/bar', $request->makeUrl('/foo/bar', true));
 }