如何在PHP中处理多元化

我有一个应用程序,可能是一个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)这个,我有如下的疯狂案例陈述:

<?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;
  }

我希望你能理解这个问题.考虑讨论部分的案例数量.它将呈指数级增长.这将通过3个值的组合来实现,这将是2到3(23)的幂,它来自8个案例陈述.

有减少这种情况的最佳方法吗?这是我第一次进入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.

点赞