bistro/router

适用于PHP >= 5.3的路由引擎

1.0.2 2013-04-30 18:36 UTC

This package is not auto-updated.

Last update: 2024-09-23 10:47:07 UTC


README

一个独立的PHP >= 5.3路由引擎。

安装

全程使用Packagist!

"require": {
	"bistro/router": "1.0.*"
}

当然,您也可以始终在GitHub上 下载源代码的zip包

创建路由

$router = new \Bistro\Router\Router;
$router->add('home', '/')->defaults(array(
	'controller' => 'welcome',
	'action' => 'view'
));

检查匹配

$method = $_SERVER['REQUEST_METHOD'];
$uri = isset($_SEVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '/';

$params = $router->match($method, $uri);
// $params = array('controller' => 'welcome', 'action' => 'view');

如果从 match() 返回一个空数组,表示没有与请求匹配的结果。可能是404错误时间!

命名路由段

您可以使用 :{name} 为您的路由提供命名段。

$router->add('crud', '/:controller/:action/:id?')->defaults(array(
	'id' => null
));

您可以在命名段的末尾放置一个 ?,使此段可选。

添加约束

如果您想要向命名段添加约束,可以在 : 前面放置一个有效的正则表达式。

$router->add('id_only', '/:controller/user|post:action/\d+:id');

在此路由中,动作必须是 user 或 post,并且 id 是一个整数。

基于方法的路由

只想获取某些请求方法?只需使用辅助方法即可。

$router->post('login', '/login')->defaults(array('controller' => 'login', 'action' => 'process'));

可用的辅助方法有 getpostputdelete

通配符

想要获取URL末尾的所有内容?很简单!

$router->add('wildcard', '/:controller/.*:wildcard')

添加请求方法默认值

构建API并想为每种请求方法添加不同的参数?

$router->add('api', "/:controller/\d+:id?")
	->get(array('action' => 'read'))
	->post(array('action' => 'create'))
	->put(array('action' => 'update'))
	->delete(array('action' => 'delete'));

反向路由

使用内置的反向路由功能以合理的方式跟踪您的URL。

真的...不要将URL手动输入到您的应用程序中!这要容易得多,并且允许有更大的灵活性。

$router->add('reverse', '/blog/:year/:month/:day');

// Reverse Routing magic!
echo $router->url('reverse', array(
	'year' => 2013,
	'month' => 03,
	'day' => 31
));
// Output: /blog/2013/03/31

子目录安装?

如果您已将应用程序安装在一个子目录中,您可以将此信息添加到路由器中,一切仍然会按预期工作。

$router = new \Bistro\Router\Router('subdirectory');

许可证

MIT