コード例 #1
0
 public function willRespondToRequest($controllerClass, Request $request)
 {
     if (!class_exists($controllerClass)) {
         throw new InvalidArgumentException('existing class name', $controllerClass);
     }
     if (!isset($controllerClass::$_ajaxAccess) || !is_array($controllerClass::$_ajaxAccess)) {
         return true;
     }
     $method = strtolower($request->getMethod());
     $accessControl = array_merge(array('get' => self::BOTH, 'post' => self::BOTH, 'put' => self::BOTH, 'delete' => self::BOTH), $controllerClass::$_ajaxAccess);
     if ($accessControl[$method] === self::NORMAL_ONLY && $request->isXmlHttpRequest() || $accessControl[$method] === self::AJAX_ONLY && !$request->isXmlHttpRequest()) {
         return false;
     }
     return true;
 }
コード例 #2
0
ファイル: Framework.php プロジェクト: splot/framework
 /**
  * Single entry point for most of use cases in which the passed application will be bootstrapped,
  * configured and run in appropriate mode.
  *
  * Most of applications should use this method as it controls the whole application flow from start to the end
  * of the process in a most standard way.
  *
  * It returns whatever result of running the application.
  * 
  * @param  AbstractApplication $application Application to be ran.
  * @param  string              $env         [optional] Environment in which the application should be ran. Default: `dev`.
  * @param  boolean             $debug       [optional] Should application be ran in debug mode? Default: `true`.
  * @param  int                 $mode        [optional] Mode in which the application should be ran.
  *                                          This is one of the `Framework::MODE_*` constants. Default: `Framework::MODE_WEB`.
  * @return mixed
  *
  * @codeCoverageIgnore
  */
 public static function run(AbstractApplication $application, $env = 'dev', $debug = true, $mode = self::MODE_WEB)
 {
     $framework = new static();
     // console and command modes should attempt to read env and debug from argv
     if ($mode === self::MODE_CONSOLE || $mode === self::MODE_COMMAND) {
         list($env, $debug) = static::getEnvDebugFromArgv($_SERVER['argv'], $env, $debug);
     }
     $framework->warmup($application, $env, $debug);
     switch ($mode) {
         case self::MODE_CONSOLE:
             $result = $framework->runConsole($application);
             break;
         case self::MODE_COMMAND:
             $input = new ArgvInput();
             $result = $framework->runCommand($application, $input);
             break;
         case self::MODE_TEST:
             $result = $framework->runTest($application);
             break;
         case self::MODE_WEB:
         default:
             $request = Request::createFromGlobals();
             $result = $framework->runWebRequest($application, $request);
     }
     return $result;
 }
コード例 #3
0
ファイル: Router.php プロジェクト: splot/framework
 /**
  * Tries to find a route for the given request.
  * 
  * @param Request $request
  * @return array|bool Array of information about a found route or false if no route found.
  */
 public function getRouteForRequest(Request $request)
 {
     return $this->getRouteForUrl($request->getPathInfo(), $request->getMethod());
 }
コード例 #4
0
 /**
  * @covers ::sendResponse
  */
 public function testSendingResponse()
 {
     $willSendResponseCalled = false;
     $this->application->getContainer()->get('event_manager')->subscribe(WillSendResponse::getName(), function () use(&$willSendResponseCalled) {
         $willSendResponseCalled = true;
     });
     $request = Request::create('/');
     $response = new Response('This is some valid response.');
     ob_start();
     $this->application->sendResponse($response, $request);
     $content = ob_get_contents();
     ob_end_clean();
     $this->assertEquals('This is some valid response.', $content);
     $this->assertTrue($willSendResponseCalled);
 }
コード例 #5
0
ファイル: RouterTest.php プロジェクト: splot/framework
 /**
  * @covers ::getRouteForRequest
  * @covers ::getRoute
  */
 public function testGettingRouteForRequest()
 {
     $router = $this->provideRouter();
     $indexRoute = $router->addRoute('test.index', TestController::class, null, '/test/');
     $listRoute = $router->addRoute('test.list', TestController::class, null, '/test/{page:int}/{limit:int}?');
     $itemRoute = $router->addRoute('test.item', TestController::class, null, '/test/{id:int}/{slug}.html');
     $itemAdminRoute = $router->addRoute('test.item_admin', TestController::class, null, '/test/admin/{id:int}/', array('get' => 'index', 'put' => false, 'post' => 'index', 'delete' => 'index'));
     $this->assertFalse($router->getRouteForRequest(Request::create('/lorem/ipsum/')));
     $this->assertSame($itemRoute, $router->getRouteForRequest(Request::create('/test/123/lipsum.html')));
     $this->assertSame($listRoute, $router->getRouteForRequest(Request::create('/test/2/')));
     $this->assertSame($listRoute, $router->getRouteForRequest(Request::create('/test/2/50', 'POST')));
     $this->assertSame($indexRoute, $router->getRouteForRequest(Request::create('/test/')));
     $this->assertSame($itemAdminRoute, $router->getRouteForRequest(Request::create('/test/admin/12/')));
     $this->assertFalse($router->getRouteForRequest(Request::create('/test/admin/12/', 'PUT')));
 }
コード例 #6
0
 public function index($id, Request $request)
 {
     return '#' . $id . ': Injected Request with URL: ' . $request->getPathInfo();
 }
コード例 #7
0
ファイル: EventsTest.php プロジェクト: splot/framework
 /**
  * @covers \Splot\Framework\Events\WillSendResponse::__construct
  * @covers \Splot\Framework\Events\WillSendResponse::getRequest
  * @covers \Splot\Framework\Events\WillSendResponse::getResponse
  */
 public function testWillSendResponse()
 {
     $request = Request::create('/test/');
     $response = new Response('some response');
     $event = new Events\WillSendResponse($response, $request);
     $this->assertSame($request, $event->getRequest());
     $this->assertSame($response, $event->getResponse());
 }