【问题标题】:Basic Routing in PHP ApplicationPHP 应用程序中的基本路由
【发布时间】:2014-05-06 01:27:30
【问题描述】:

我正在编写一个 PHP 应用程序。我想为我的应用程序的所有请求创建一个点。在 index.php 文件中具有路由逻辑并基于 URL 中的参数,使用 switch case 包含所需文件并创建完整页面的最佳方式是什么?

或者

有没有其他方法可以有效地做到这一点?

【问题讨论】:

  • 你可以通过对象来实现 - 无论如何这将是一堆逻辑运算符(例如 case),但它可能会比在过程代码中更简洁和更好。跨度>
  • 是的,就是这样。大多数 PHP 框架都以这种方式进行路由。阅读一些关于 PHP 路由的教程。但 SO 不是问此类问题的地方 - 有多个正确答案。
  • 是的,这是大多数 PHP 应用程序的工作方式。但是您可以通过使用 php URL 路由使其更干净。看看Other SO Question

标签: php url routing url-routing


【解决方案1】:

你是否在使用类似 MVC 的结构?

对我来说,index.php 应该 Bootstrap 脚本,它通常在我的应用程序中包含几行代码,仅此而已。

另外,我相信最广泛使用的路由管理方式是通过 Apache 的 mod_rewrite 或其他 Web 服务器中的类似方法。

使用switch 语句可能会在超过 10 到 20 个案例时失控。这是我通常做的一个非常简化的版本:

http://localhost/news/100 将转换为 http://localhost/index.php?module=news&id=100

index.php 上,我有一个请求处理程序,它像这样加载module

$app->run( $_REQUEST['module'], 
    array(
        'action' => $_REQUEST['action'], 
        'id'     => $_REQUEST['id']
    )
);

module 有几个 actionsapprun 方法查看是否指定了 action;如果不是,它将触发default 操作。在这种情况下,它将show id 为100 的新闻。这样的事情会触发edit 动作:

http://localhost/news/edit/100

这只是简单的想法。您不应尝试在应用程序中使用上述 PHP 代码,因为它不是生产级代码。我只是想简要解释一下switch 语句方法的另一种方法。

【讨论】:

    猜你喜欢
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2011-11-22
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    相关资源
    最近更新 更多