PHP 中的 Rails 风格 URL 映射

发布于 2024-11-08 06:13:59 字数 173 浏览 2 评论 0原文

有没有标准库可以在 PHP 中进行 Rails 风格的 URL 映射?我没有使用任何框架,所有代码都是手写的。基本上,我正在寻找一个执行此操作的库

example.com/user/1/active

这应该映射到用户,其中 id = 1 和 status = 2 (这些是参数)。我应该能够定义地图。

Is there any standard library to do Rails style URL mapping in PHP? I am not using any framework, all the code is hand-written. Basically, I am looking for a library that does this

example.com/user/1/active

this should map to a user, with id = 1 and status = 2 (those being the parameters). I should be able to define the map.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

很糊涂小朋友 2024-11-15 06:13:59

在 PHP 中大约有一万种方法可以做到这一点。

我最近成为了 klein.php 的粉丝,这是一个轻量级的路由器代码,带有一些方便的功能方便的方法。它不是一个框架,如果您愿意,也不会妨碍您使用它。

它基本上只不过是“这是一个 URL 模式,这是模式匹配时运行的函数”。

There are roughly ten thousand ways to do this in PHP.

I've recently become a fan of klein.php, a lightweight bit of router code with some handy convenience methods. It's not a framework, and doesn't get in the way of you using one if you wanted to.

It's basically little more than "here's a URL pattern, and here's the function to run when the pattern matches."

娇纵 2024-11-15 06:13:59

框架确实是为了自动处理这个问题而构建的,但是如果缺少使用框架,您最好编写自己的 .htaccess 规则(如果您使用的是 linux 或 os x),或者尝试查看 CakePHP 如何处理 url 重写和以此为基础。
示例:

http://example.com/name/corey
RewriteRule ^(.+)/(.+)$ /$1.php?name=$2 [NC,L]

这会将上面的 url 重写为 /name.php?name=corey

Frameworks are really built to handle that automatically, but short of using a framework, you would be best off writing your own .htaccess rules (if you are using linux or os x), or try checking out how say, CakePHP handles url rewriting and base off of that.
Example:

http://example.com/name/corey
RewriteRule ^(.+)/(.+)$ /$1.php?name=$2 [NC,L]

That would rewrite the above url to /name.php?name=corey

挽你眉间 2024-11-15 06:13:59

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 才能采用这种方法。

PHP's purpose is not to handle differently formatted URLs. There should be some custom application logic taking care of this.

You've mentioned that you are not using any framework at this moment, so I would like to propose you to include Silex, it's a micro framework based on the components of Symfony 2.

Here's the 'Hello World' example:

require_once __DIR__.'/silex.phar'; 

$app = new Silex\Application();

$app->get('/hello/{name}', function($name) use($app) { 
  return 'Hello '.$app->escape($name); 
});

$app->run();

You've mentioned that you are currently using PHP 5.2. Silex uses namespaces, which are available from PHP 5.3 and so on, so you will have to upgrade your PHP to take this approach.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文