是否有任何标准库可以在 PHP 中进行 Rails 样式的 URL 映射?我没有使用任何框架,所有代码都是手写的。基本上,我正在寻找一个这样做的图书馆
example.com/user/1/active
这应该映射到用户,id = 1 和状态 = 2(那些是参数)。我应该能够定义地图。
是否有任何标准库可以在 PHP 中进行 Rails 样式的 URL 映射?我没有使用任何框架,所有代码都是手写的。基本上,我正在寻找一个这样做的图书馆
example.com/user/1/active
这应该映射到用户,id = 1 和状态 = 2(那些是参数)。我应该能够定义地图。
在 PHP 中有大约一万种方法可以做到这一点。
我最近成为了klein.php的粉丝,这是一个轻量级的路由器代码,带有一些方便的便捷方法。它不是一个框架,如果您愿意,也不会妨碍您使用它。
它基本上只不过是“这是一个 URL 模式,这是模式匹配时运行的函数”。
PHP 的目的不是处理不同格式的 URL。应该有一些自定义应用程序逻辑来处理这个问题。
你提到你现在没有使用任何框架,所以我想建议你包括Silex,它是一个基于 Symfony 2 组件的微框架。
这是“Hello World”示例:
require_once __DIR__.'/silex.phar';
$app = new Silex\Application();
$app->get('/hello/{name}', function($name) use($app) {
return 'Hello '.$app->escape($name);
});
$app->run();
您提到您当前使用的是 PHP 5.2。Silex 使用名称空间,从 PHP 5.3 等开始就可以使用,因此您必须升级您的 PHP 才能采用这种方法。
框架确实是为自动处理而构建的,但如果不使用框架,您最好编写自己的 .htaccess 规则(如果您使用的是 linux 或 os x),或者尝试查看 CakePHP 如何处理 url 重写和以此为基础。例子:
http://example.com/name/corey
RewriteRule ^(.+)/(.+)$ /$1.php?name=$2 [NC,L]
这会将上面的 url 重写为 /name.php?name=corey