php - 如何在 PHP 中处理多元化

标签 php pluralize

我有一个正在开发的应用程序,大概是一个 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 值的组合进行,这将达到 23 次方(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/

相关文章:

php - 想要将 Facebook/Gmail 聊天安装到我的 Web 应用程序

c# - 如何关闭 Entity Framework 5 的复数表创建?

php - Laravel Blade @lang() 本地化中的多元化?

mysql - 重构一个简单的脚本来清理 ruby​​ 中的 mysql 数据库

entity-framework - 有没有办法在 EDM Designer 2010 中设置自定义复数形式?

php - 如何让 PHP CodeSniffer Fixer 忽略命名空间声明?

javascript - 在javascript中加载带有类的php页面

php - 为什么我无法使用 ajax 查询连接到数据库?

php - 有没有办法弄清楚为什么我的生产 mysql 这么慢?

django - Django 以复数和单数形式翻译一个单词的奇怪行为