我刚开始使用PHP开发,而且我一直在查看我公司的Web服务器文件。以前的程序员已经放置了一个端点来处理所有请求。例如,
www.example.com/webservice.php
使用此端点,客户端将使用" action"发送大量查询参数。必须参数。 " action"的值决定了将要调用的函数。
因此,webservice.php是一个包含极长if * else语句的大文件,它检查$ _GET [" action"]并在另一个文件中调用相应的函数(functions.php)连同相关参数。
我对此设计的担忧是: -
如果检查"动作"差不多大约100个,那肯定不是有效编码吗?
对RESTful哲学有一些了解,我的方法是将其分成诸如
之类的组件www.example.com/module/submodule/action.php
答案 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_foo
和Go_bar
等等。然后一些半丑的代码会直接转到所需的函数:
$to = @$_GET['action'];
if (! isset($to)) die("action= must be supplied");
$fcn = "Go_$to";
$fcn->();
每个函数都会解析它需要的任何参数。 (或者你可以预先解析一些/所有。)
正如其他人所说,性能损失可以忽略不计。注重代码的清晰度,而不是速度。
<opinion>
对于“REST”,我发现它是一种不必要的膨胀语法,它不会提供任何过时的参数。甚至“版本化”也证明是无用的。参数是/widgit/123
而不是&widgit=123
;我认为=
更清楚。