reinink / roundabout
此包已被废弃且不再维护。未建议替代包。
基于 Symfony2 HttpFoundation 的 RESTful 路由器。
1.0.4
2014-02-25 21:25 UTC
Requires
- symfony/http-foundation: 2.1.*@dev
This package is not auto-updated.
Last update: 2020-01-19 15:40:57 UTC
README
基于 Symfony2 HttpFoundation 的 RESTful 路由器。
亮点
- 极其简单的 API
- RESTful 支持:GET、POST、PUT & DELETE
- 基于 Symfony2 HttpFoundation(直接使用即可)
- 支持闭包、函数和控制器(类)回调
- 支持使用数组批量导入路由
- 自定义控制器实例化(用于 IoC 容器集成)
入门
安装
Roundabout 可通过 Composer 获取
{ "require": { "reinink/roundabout": "1.*" } }
设置
<?php use \Reinink\Roundabout\Router; use \Symfony\Component\HttpFoundation\Request; // Include Composer autoloader require 'vendor/autoload.php'; // Create request object $request = Request::createFromGlobals(); // Create router $router = new Router($request);
基本路由
<?php // Home page $router->get( '/', function () { // do something } ); // Contact page $router->get( '/contact', function () { // do something } ); // Process form post $router->post( '/form-submit', function () { // do something } ); // Secure (HTTPS) page $router->getSecure( '/login', function () { // do something } ); // PUT request $router->put( '/resource', function () { // do something } ); // DELETE request $router->delete( '/resource', function () { // do something } );
更复杂的路由
<?php // User profile $router->get( '/user/([0-9]+)', function ($userId) { // do something with $userId } ); // Output image $router->get( '/photo/(xlarge|large|medium|small|xsmall)/([0-9]+)', function ($imageSize, $imageId) { // do something with $imageSize and $imageId } );
使用控制器类
<?php // Home page $router->get('/', 'Controller::index'); // Contact page $router->get('/contact', 'Controller::contact'); // Process form post $router->post('/form-submit', 'Controller::process_form'); // Secure (HTTPS) page $router->getSecure('/login', 'Controller::login');
批量路由定义
<?php $router->import( [ [ 'path' => '/', 'method' => 'GET', 'secure' => false, 'callback' => 'Controller::index' ], [ 'path' => '/contact', 'method' => 'GET', 'secure' => false, 'callback' => 'Controller::contact' ], [ 'path' => '/form-submit', 'method' => 'POST', 'secure' => false, 'callback' => 'Controller::process_form' ], [ 'path' => '/login', 'method' => 'GET', 'secure' => true, 'callback' => 'Controller::login' ] ] );
自定义控制器实例化
默认情况下,Roundabout 会自动实例化控制器类,但可以使用 $instantiation_callback
参数来覆盖此行为。这有助于在需要使用反转控制容器的情况下。
<?php // Your IoC container $ioc = new Container; // Create router $router = new Router( $request, function ($class, $method, $parameters) use ($ioc) { $controller = $ioc->make($class); return call_user_func_array(array($controller, $method), $parameters); } );