【问题标题】:Using Routing with PHP Good or Bad idea? [closed]在 PHP 中使用路由是好主意还是坏主意? [关闭]
【发布时间】:2014-02-27 03:07:27
【问题描述】:

我通过 PHP 和 Mysql 有条件地根据 URL 向用户显示不同的页面。它目前是使用$_GET['page'] 的简单PHP 页面。我还使用htaccess URL rewrite 使页面更具SEO,Mysql 用于数据,Smarty 作为我的模板引擎。

我正在考虑添加更多功能并将其发展为具有大量 URL 参数的成熟论坛/博客/组。考虑切换到 MVC 框架,但它们比我需要的要多得多,而且技术性要强得多。然而他们告诉我路由器,我意识到我的简单 PHP 页面就是这样工作的。我想让这个路由器保持简单,所以我使用 switch 语句来获取预先选择的 pagedefault 的页面到主页。虽然我决定不使用任何 MVC 使事情变得不必要地复杂化,但我仍然感到困惑并请求您对以下方面的看法:

1.这种方法正确吗?我读过

Web 应用程序本质上是一系列小的离散的 要求。如果您通过单个控制器发送所有请求 在一台机器上你刚刚击败了这个非常重要的 架构。

http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html 这增加了我的困惑!

2。这种方式安全吗?我看到大多数 PHP 路由器使用某种正则表达式来检查参数以进行清理。我只是用PHP switch 来做这件事!

3.它可扩展吗?我没有太多的流量,每天最多 3000。这种路由器方法会因更多流量而减慢我的网站速度吗?

4.包含页面比重定向更好吗? 因为我是redirecting 这个路由器之后的用户,有条件地,我想include PHP 在 PHP 路由器本身中页面它。哪种方法更好?

对不起,如果这对某些人来说似乎很愚蠢,但我浪费了 2 天时间来了解 MVC 将如何帮助我,并发现没有 MVC 框架我会更好,只是担心我是否做对了!

【问题讨论】:

  • 1.不要听从 Rasmus Lerdorf 的建议,2. 很可能,提供的路由器只做 routem,3. 取决于路由器。如果它是具有很多功能的重型路由器,它可能无法扩展,但应用程序的其他部分将成为瓶颈,并且 4. 包含 总是 比重定向更好
  • 为什么不试试 Codeigniter,最好的 MVC(对我来说)。它使路由变得轻而易举。
  • @Houssni,Rasmus Lerdorf 是 PHP 的创造者。
  • 您不需要重定向或包含文件。只需创建一个正确控制器的实例并执行他的方法之一(通常称为“动作”)
  • @Chris 为什么听取他的建议是个坏主意?大声笑

标签: php mysql .htaccess


【解决方案1】:

其实我也有过和你一样的经历。我使用了与您非常相似的方法。我的所有活动都转到我的路由器 PHP 文件,然后我会从那里解析 URL 并调用需要调用的任何控制器。此外,要调用我的页面,我只需执行include,这不会影响性能。这个系统似乎很适合路由。

综上所述,如果您想扩展网站,我会鼓励您真正检查一下框架。我并不是说你不能用你所拥有的东西来扩大规模,但道路会更长。这仅仅是因为你将不得不做或重复框架正在做的同样的事情。我推荐一个轻量级的框架,比如 Yii 框架。在你承诺之前,我会鼓励你尝试一下,看看这一切是否有意义。如果是这样,那么值得花时间和精力升级到它。我为我的网站做了同样的事情,我能够非常快速地添加新功能。

  1. 是的,您的方法是正确的。
  2. 它在一定程度上是安全的。您需要自己验证参数并在运行查询时执行 SQL 注入转义。同样,这是框架内置的东西,为什么要自己做呢?虽然这很容易做到。
  3. 是的,它是可扩展的;框架运行相同类型的模式。只要你有硬件支持它就可以了。
  4. 是的,包含比重定向更好,因为它不必向您的服务器发出另一个请求,而是在同一个请求上运行所有请求。

至于您的最后一点:两天可能不足以学习整个 MVC 架构。 3 年前,我为工作经历了同样的过程。这是非常痛苦的,但几周后我注意到我的代码更有条理,并且没有到处都是 SQL 查询。我尝试了几个框架:Cake、Zend、Symphony 和 Yii。我选择了 Yii,因为它对我来说似乎是最好的。

【讨论】:

  • 感谢您的详细解释和指向简单框架。由于路由器仅在预定义的变量集之间切换pages(路由器上没有数据库交互),sql 注入将仅加载默认页面。在以后重定向的页面上,我会保护所有检查的数据。由于我在没有任何框架的情况下对我的网站进行了手工编码,因此我目前了解该网站的进出,因此现在将避免使用 MVC 框架,但请注意 codeigniteryii 以备将来尝试。
  • 是的,我的情况和你一样。我有大量的代码编写,实际上在我的网站上有一个用户群。我决定走框架路线,因为对我来说好处大于缺点。例如,使用 Yii 框架,您可以引入扩展,而不必自己编写所有内容。再次由您选择。
猜你喜欢
  • 2011-10-21
  • 2011-10-26
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 2015-07-20
  • 2010-11-23
  • 2019-11-11
  • 2014-02-13
相关资源
最近更新 更多