我有一个正在开发的应用程序,大概是一个 API。应用程序以 JSON 格式返回请求的资源。所以我有一个项目管理应用程序,其结构类似于以下内容:
- 项目
- 付款
- 问题
- 讨论
- 用户
现在 API 将调用:
/projects List all the projects
/project List all the projects (alias)
/projects/ID/issues List all the issues of this project
/project/ID/issues List all the issues of this project (alias)
/projects/ID/issue List all the issues of this project (alias)
/project/ID/issue List all the issues of this project (alias)
等等。现在我的问题是,我会为此使用 switch ($request)
并且我有如下疯狂的 case
语句:
<?php
switch ($request) {
case '/projects':
case '/project':
# code...
break;
case '/projects/ID/issues':
case '/project/ID/issues':
case '/projects/ID/issue':
case '/project/ID/issue':
# code...
break;
}
我希望你理解这个问题。考虑一下 discussion
部分的案例数。它会呈指数级增长。这将通过 3
值的组合进行,这将达到 2
的 3
次方(23) 出现在 8
case
语句附近。
有减少这种情况的最佳方法吗?这是我第一次进入 Stack Overflow。提前致谢。
最佳答案
您可以通过在第一次尝试时检查来减少它。即,检查复数形式或单数形式,并将其替换为一种单一形式。
<?php
$request = replace(array("projects", "project"), "project", $request);
$request = replace(array("issues", "issue"), "issue", $request);
$request = replace(array("users", "user"), "user", $request);
$request = replace(array("discussions", "discussion"), "discussion", $request);
然后检查单数形式的 switch ()
情况:
<?php
switch ($request) {
case '/project':
# code...
break;
case '/project/ID/issue':
# code...
break;
}
我知道这将是一项重复性任务,但我想如果您不想使用任何复数方法,这会更好。希望这个“快速破解”对您有所帮助。由于变量不超过三个或四个,这样更好。
Note: The main reason I gave this answer is for Simplicity and for not using RegEx.
关于php - 如何在 PHP 中处理多元化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37011805/