PHP code example of romeoz / rock-route
1. Go to this page and download the library: Download romeoz/rock-route 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/ */
romeoz / rock-route example snippets
// url: http://site.com/items/7/
$route = new Route();
$handler = function(Route $route){
return 'id: ' . $route->getParam('id');
};
$route->get('/items/{id:\d+}/', $handler, ['as' => 'item']);
$route->post('/items/', ['\namespace\SomeController', 'actionCreate']);
$route->run();
// output: 'id: 7'
echo Alias::getAlias('@item', ['id' => 15]);
// output: '/items/15/'
$pattern = [
Route::FILTER_HOST => '{sub:[a-z]+}.site.com',
Route::FILTER_PATH => '/items/{id:\d+}/',
Route::FILTER_GET => [
'query' => true,
'view' => 'all',
'order' => 'sort-{order:(asc|desc)}'
]
]
$route->post($pattern, $handler);
$config = [
'rules' => [
'item' => [Route::GET, '/items/{id:\d+}/', $handler]
]
]
$route = new Route($config);
$route->run();
$config = [
'groups' => [
'api' => [
[Route::GET, Route::POST],
[ Route::FILTER_HOST => 'api.site.com' ],
'rules' => [
'item' => [Route::GET, '/items/{id:\d+}/', $handler]
]
]
]
]
$route = new Route($config);
$route->run();
$route = new Route();
$handler = function(){
return 'Hello world!';
};
$filters = [
'access' => [
'class' => '\rock\route\filters\AccessFilter',
'rules' => [
'allow' => true,
'ips' => ['10.1.2.3']
]
]
]
$route->get('/items/{id:\d+}/', $handler, ['filters' => $filters]);
$route->run();
$filters = function(Route $route){
return $route->request->isAjax();
};
$route = new Route();
$route->REST('items', 'ItemsController');
$route->run();
class ItemsController
{
// GET /items/
public function actionIndex()
{
return 'index';
}
// GET /items/7/
public function actionShow()
{
return 'show';
}
// POST /items/
public function actionCreate()
{
return 'create';
}
// PUT /items/7/
public function actionUpdate()
{
return 'update';
}
// DELETE /items/7/
public function actionDelete()
{
return 'delete';
}
}
$route->REST('items', 'ItemsController', ['only' => ['show', 'create']]);
$config = [
'RESTHandlers' => [
'all' => [
Route::GET,
'/{url}/',
['{controller}', 'actionAll']
],
'one' => [
Route::GET,
'/{url}/{id}/',
['{controller}', 'actionOne']
],
'create' => [
[Route::POST, Route::OPTIONS],
'/{url}/',
['{controller}', 'actionCreate']
],
'update' => [
[Route::PUT, Route::PATCH, Route::OPTIONS],
'/{url}/{id}/',
['{controller}', 'actionUpdate']
],
'delete' => [
[Route::DELETE, Route::OPTIONS],
'/{url}/{id}/',
['{controller}', 'actionDelete']
]
]
];
$route = new Route($config);
// url: http://site.com/api/items/7/
$route = new Route();
$handler = function(Route $route) {
$handler = function(Route $route){
return 'id: ' . $route['id'];
};
$route->get('/items/{id:\d+}/', $handler, ['as' => 'item']);
return $route;
};
$route->group(Route::ANY, '/api/{url:.+}', $handler, ['path' => '/api/', 'as' => 'api']);
$route->run();
// output: 'id: 7'
echo Alias::getAlias('@api.item', ['id' => 15]);
// output: '/api/items/15/'
// url: http://api.site.com/items/7/
$route = new Route();
$handler = function(Route $route) {
$handler = function(Route $route){
return 'id: ' . $route['id'];
};
$route->get('/items/{id:\d+}/', $handler, ['as' => 'item']);
return $route;
};
$route->group(Route::ANY, [ Route::FILTER_HOST => 'api.site.com' ], $handler, ['as' => 'api']);
$route->run();
// output: 'id: 7'
echo Alias::getAlias('@api.item', ['id' => 15]);
// output: 'api.site.com/items/15/'
$route->get('/items/{id:\d+}/', $handler, ['as' => 'item']);
echo Alias::getAlias('@item', ['id' => 15]);
// output: '/items/15/'
$pattern = [
Route::FILTER_HOST => '{sub:[a-z]+}.site.com',
Route::FILTER_PATH => '/items/{id:\d+}/',
Route::FILTER_GET => [
'query' => true,
'view' => 'all',
'order' => 'sort-{order:(asc|desc)}'
]
]
$route->get($pattern, $handler, ['as' => 'item']);
echo Alias::getAlias('@item');
// output: {sub}.site.com/items/{id}/?view=all&order=sort-{order}
$route->group(
Route::ANY,
[ Route::FILTER_HOST => 'api.site.com' ],
$handler, ['as' => 'api']
);
$config = [
'rules' => [
'item' => [Route::GET, '/items/{id:\d+}/', $handler]
]
]
$route = new Route($config);
echo Alias::getAlias('@item');
// output: '/items/{id}/'
$response = new \rock\response\Response;
$route = new Route(['response' => $response]);
$handler = function(Route $route){
$route->response->format = \rock\response\Response::FORMAT_JSON;
return ['id' => $route->getParam('id')];
};
$route->get('/items/{id:\d+}/', $handler, ['as' => 'item']);
$route->run();
$response->send();
// output: {"id":7}
$route = new Route;
$route->get('/', ['ItemsController', 'actionIndex'])
$route->run();
class ItemsController
{
public function actionIndex(\rock\request\Request $request)
{
return $request::className();
}
}
// output: 'rock\request\Request'
// url: http://site.com/news/7/
$route = new Route();
$handler = function(Route $route){
return 'hello';
};
$route->get('/foo/{id:\d+}/', $handler);
$route->post('/bar/{id:\d+}', ['\namespace\BarController', 'actionIndex']);
$route->run();
class BarController
{
public function actionIndex(\rock\route\Route $route)
{
$response = (new \rock\route\providers\Local(['route' => $route]))->send('http://site.com/foo/11/');
return $response->getContent() . ' world!';
}
}
// output: 'hello world!'
$response = (new \rock\route\providers\Remote())->send('http://site.com/foo/11/');
$cache = new \rock\cache\Memcached;
$route = new Route([
'cache' => $cache,
'enableCache' => true
]);
$route->flushCache();