PHP code example of c9s / roller
1. Go to this page and download the library: Download c9s/roller library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
c9s / roller example snippets
on('/path/to/:date',function() {
return 'your content';
});
on('/path/to/:year', [ ':year' => '\d+' ] ,function() {
return 'your content';
});
dispatch( $_SERVER['PATH_INFO'] );
$router = new Roller\Router;
$router->add( '/blog/:id/:title' , function($id,$title) {
return 'Blog';
});
$router->add( '/blog/:year/:month/:id/:title' , array('Controller','method') );
$router->add( '/path/to/blog' , 'Controller:methodName' );
$router->add( '/path/to/:year' , array('Callback','method') , array(
':year' => '\d+',
));
$router->add( '/path/to/:year' , function($year) {
return $year;
},array(
':year' => '\d+',
));
$router->any( '/path/to/:year' , function($year) {
return $year;
}, array(
':year' => '\d+',
));
$router->get( '/path/to/:year' , function($year) { ... } );
$router->post( '/path/to/:year' , function($year) { ... } );
$router->add( '/path/to/:year' , array('Callback','method') , array(
':year' => '\d+',
'default' => array(
'year' => 2000,
),
));
$router->add( '/path/to/:year' , array('Callback','method') , array(
':year' => '\d+',
'method' => 'post',
'default' => array(
'year' => 2000,
),
));
$subroutes = new Roller\RouteSet;
$subroutes->add( '/subitem' , $cb );
$routes = new Roller\RouteSet;
$routes->mount( '/item' , $subroutes );
$routes = new Roller\RouteSet;
$routes->add( '/path/to/:year' , array( 'Callback', 'method' ) );
$routes = new Roller\RouteSet;
$routes->mount( '/root' , $routes );
$router = new Roller\Router( $routes );
$r = $router->dispatch( $_SERVER['PATH_INFO'] );
if( $r !== false )
echo $r();
else
die('page not found.');
class YourRoute extends Roller\MatchedRoute
{
// customze here.
}
$r = new Roller\Router(array(
'route_class' => 'YourRoute'
));
$route = $r->dispatch( '/path/to/...' ); // get YourRoute object.
class AnnotationTestController {
/**
* @Route("/hello/:name", name="_hello", @Route("/")
*/
function indexAction() {
return 'index';
}
}
$router = new Roller\Router;
$router->importAnnotationMethods( 'AnnotationTestController' , '/Action$/' );
$route = $router->dispatch('/');
$route(); // returns 'index'
$route = $router->dispatch('/hello/John');
$route(); // returns "John"
$router = new Roller\Router( null , array(
'cache_id' => '_router_testing_'
));
$router = new Roller\Router( null , array(
'cache_id' => '_router_testing_',
'cache_dir' => 'tests/cache',
));
$router = new Roller\Router;
$restful = new Roller\Plugin\RESTful(array(
'prefix' => '/restful'
));
$router->addPlugin($restful);
$restful->registerResource( 'blog' , 'BlogResourceHandler' );
use Roller\Plugin\RESTful\ResourceHandler;
class BlogResourceHandler extends ResourceHandler
{
public function create() {
$this->codeCreated();
return array( 'id' => 1 );
}
public function update($id)
{
$put = $this->parseInput();
return array( 'id' => 1 );
}
// delete a record.
public function delete($id)
{
return array( 'id' => 1 );
}
// load one record
public function load($id) { return array( 'id' => $id , 'title' => 'title' ); }
// find records
public function find() {
return array(
array( 'id' => 0 ),
array( 'id' => 1 ),
array( 'id' => 2 ),
);
}
}
$_SERVER['REQUEST_METHOD'] = 'get';
$r = $router->dispatch('/restful/blog/1');
// returns {"success":true,"data":{"id":"1","title":"title"},"message":"Record 1 loaded."}
$r();
$_SRVER['REQUEST_METHOD'] = 'get';
$r = $router->dispatch('/restful/blog');
// {"success":true,"data":[{"id":0},{"id":1},{"id":2}],"message":"Record find success."}
$r();
static function expand($routes, $h, $r)
{
$routes->add( "/$r(\.:format)" , array($h,'handleFind'),
array(
'get' => true ,
'default' => array( 'format' => 'json' )
));
$routes->add( '/' . $r . '(\.:format)' , array($h,'handleCreate'),
array(
'post' => true,
'default' => array( 'format' => 'json' )
));
$routes->add( '/' . $r . '/:id(\.:format)' , array($h,'handleLoad'),
array(
'get' => true,
'default' => array( 'format' => 'json' )
));
$routes->add( '/' . $r . '/:id(\.:format)' , array($h,'handleUpdate'),
array(
'put' => true,
'default' => array( 'format' => 'json' )
));
$routes->add( '/' . $r . '/:id(\.:format)' , array($h,'handleDelete'),
array(
'delete' => true,
'default' => array( 'format' => 'json' )
));
}
use Roller\Plugin\RESTful\ResourceHandler;
class YourResourceHandler extends ResourceHandler {
// define your own expand method
static function expand( $routes , $handlerClass, $resourceId ) {
}
}