Example #1
0
 /**
  * Returns a listing of routes available.
  *
  * @return callable
  */
 public function getRoutes()
 {
     foreach ($this->routes as $route) {
         $this->collector->addRoute($route[0], $route[1], $route[2]);
     }
     return $this->collector->getData();
 }
Example #2
0
 /**
  * Routing
  * @param string $method
  * @param string $url
  * @param object $error
  */
 public function __construct($method, $url, $error)
 {
     $router = new RouteCollector();
     include APP . 'config/routing.php';
     // TODO : Cache $router->getData()
     $dispatcher = new Dispatcher($router->getData());
     try {
         $dispatcher->dispatch($method, parse_url($url, PHP_URL_PATH));
     } catch (\Exception $e) {
         echo $error->handleError($e);
     }
 }
Example #3
0
 public function handleRequest(Request $request, Response $response)
 {
     $this->request = $request;
     $this->response = $response;
     $dispatcher = new Dispatcher($this->router->getData());
     try {
         $content = $dispatcher->dispatch($request->getMethod(), $request->getPath());
         $response->writeHead(200, ['Content-Type' => $this->responseContentType]);
         $response->write($content);
     } catch (HttpRouteNotFoundException $e) {
         $response->writeHead(404, ['Content-Type' => 'text/plain']);
     } catch (HttpMethodNotAllowedException $e) {
         $response->writeHead(403, ['Content-Type' => 'text/plain']);
     } catch (Exception $e) {
         $this->getLogger()->error($e->getMessage());
         $response->writeHead(500, ['Content-Type' => 'text/plain']);
     }
     $response->end();
 }
Example #4
0
<?php

use Phroute\Phroute\RouteCollector;
require __DIR__ . '/config.php';
require __DIR__ . '/./vendor/autoload.php';
$router = new RouteCollector();
$router->get('/{id}', function ($id) {
    $shorts_path = __DIR__ . '/shorts/' . $id . '.php';
    if (file_exists($shorts_path)) {
        header("Status: 200 OK", false, 200);
        require $shorts_path;
        die;
    } else {
        header('Bad Request', true, 404);
        header('Content-Type: application/json');
        echo json_encode(array('error' => "Le shortcut {$id} n'existe pas."));
    }
});
// $router->get('/cut/{url:(http\:\/\/)?[a-zA-Z0-9+_\-\.]+\.[a-zA-Z]{2,3}}', function($uri){
//   require(__DIR__ . '/shorten.php');
// });
// $router->get('/cut/{url}/{shortid}', function($uri, $short_id){
//   require(__DIR__ . '/shorten.php');
// });
$router->any('/', function () {
    return 'Hello :) ';
});
$dispatcher = new Phroute\Phroute\Dispatcher($router->getData());
$response = $dispatcher->dispatch($_SERVER['REQUEST_METHOD'], parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
echo $response;
Example #5
0
 public function getDispatcher()
 {
     static $dispatcher;
     if ($dispatcher) {
         return $dispatcher;
     }
     $routes = (include $this->config['config'] . '/routes.php');
     //TODO: Check if routes have been cached
     if (true) {
         $collector = new RouteCollector();
         foreach ($routes as $left => $right) {
             // $left is something like 'GET /'
             // $right is a callable
             $left = explode(" ", $left);
             if (sizeof($left) === 2) {
                 switch ($left[0]) {
                     case 'GET':
                         $collector->get($left[1], $right);
                         break;
                     case 'POST':
                         $collector->post($left[1], $right);
                         break;
                     case 'ANY':
                         $collector->any($left[1], $right);
                         break;
                     case 'HEAD':
                         $collector->head($left[1], $right);
                         break;
                     case 'OPTIONS':
                         $collector->options($left[1], $right);
                         break;
                     case 'DELETE':
                         $collector->delete($left[1], $right);
                         break;
                     default:
                         throw new ConfigException("Don't understand the HTTP method '" . $left[0] . "' in routes.php.");
                 }
             }
         }
         $routeData = $collector->getData();
     }
     return $dispatcher = new Dispatcher($routeData, $this->getHandlerResolver());
 }
<?php

include __DIR__ . '/../vendor/autoload.php';
use Phroute\Phroute\RouteCollector;
use Phroute\Phroute\Dispatcher;
$collector = new RouteCollector();
$collector->filter('auth', function () {
    return "Nope!";
});
$collector->group(array('prefix' => 'admin'), function (RouteCollector $collector) {
    $collector->group(['before' => 'auth'], function (RouteCollector $collector) {
        $collector->get('pages', function () {
            return 'page management';
        });
        $collector->get('products', function () {
            return 'product management';
        });
    });
    // Not inside auth group
    $collector->get('orders', function () {
        return 'Order management';
    });
});
$dispatcher = new Dispatcher($collector->getData());
echo $dispatcher->dispatch('GET', '/admin/pages'), "\n";
// Nope!
echo $dispatcher->dispatch('GET', '/admin/products'), "\n";
// Nope!
echo $dispatcher->dispatch('GET', '/admin/orders'), "\n";
// order management
Example #7
-1
<?php 
use Phroute\Phroute\RouteCollector;
use Phroute\Phroute\Dispatcher;
use DebugBar\StandardDebugBar as DebugBar;
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', realpath(dirname(__FILE__)) . DS);
define('APP_PATH', ROOT . 'core' . DS);
define('SITE_URL', '');
define('BS_CSS', '/vendor/twbs/bootstrap/dist/css/bootstrap.min.css');
require 'bootstrap/autoload.php';
require_once APP_PATH . 'Config.php';
//require_once ROOT . 'core/Bootstrap/aplications.php';
$debugbar = new DebugBar();
//$boostrap=new Bootstrap();
//$boostrap->run(new Request);
require_once 'bootstrap/start.php';
/*
 * Route System
 */
$router = new RouteCollector();
require_once APP_PATH . 'Routes.php';
$dispatcher = new Dispatcher($router->getData());
$response = $dispatcher->dispatch($_SERVER['REQUEST_METHOD'], parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
print $response;
$debugbarRenderer = $debugbar->getJavascriptRenderer();
echo $debugbarRenderer->renderHead();
echo $debugbarRenderer->render();