PHP ONE脚本来处理所有请求

时间:2017-04-03 02:10:17

标签: php mysql web-services optimization refactoring

我刚开始使用PHP开发,而且我一直在查看我公司的Web服务器文件。以前的程序员已经放置了一个端点来处理所有请求。例如,

www.example.com/webservice.php

使用此端点,客户端将使用" action"发送大量查询参数。必须参数。 " action"的值决定了将要调用的函数。

因此,webservice.php是一个包含极长if * else语句的大文件,它检查$ _GET [" action"]并在另一个文件中调用相应的函数(functions.php)连同相关参数。

我对此设计的担忧是: -

  • 性能问题

如果检查"动作"差不多大约100个,那肯定不是有效编码吗?

  • 设计的RESTfulness

对RESTful哲学有一些了解,我的方法是将其分成诸如

之类的组件
www.example.com/module/submodule/action.php

2 个答案:

答案 0 :(得分:1)

大多数大型PHP应用程序和MVC框架都使用URL重写,因此即使URL看起来像www.example.com/user/get/5,它实际上都是从某个index.php文件开始,并且可能在调用某些routes.php文件时调度适当的控制器。

听起来你正在处理一个遗留应用程序,但是如果其他情况不理想则是100,但问题不是只有一个入口点,而是驻留在该文件中的代码质量。

答案 1 :(得分:1)

100 if-then-else可以变成switch,这可能更干净。

另一个技巧是拥有100个功能。假设这些动作是'foo'和'bar'等等。函数可能是Go_fooGo_bar等等。然后一些半丑的代码会直接转到所需的函数:

$to = @$_GET['action'];
if (! isset($to))  die("action= must be supplied");
$fcn = "Go_$to";
$fcn->();

每个函数都会解析它需要的任何参数。 (或者你可以预先解析一些/所有。)

正如其他人所说,性能损失可以忽略不计。注重代码的清晰度,而不是速度。

<opinion>对于“REST”,我发现它是一种不必要的膨胀语法,它不会提供任何过时的参数。甚至“版本化”也证明是无用的。参数是/widgit/123而不是&widgit=123;我认为=更清楚。