方法名:使用单个单词,禁止多单词、禁止下横线、禁止重复业务核心词
多单词拆分Controller

一、Code代码样例

  1. <?php
  2. namespace App\Module\Cms\Controller;
  3. use Swork\Server\Http\Argument;
  4. use .....
  5. /**
  6. * @Controller("/cms/info")
  7. */
  8. class LevelController extends BeanCollector
  9. {
  10. /**
  11. * @Inject()
  12. * @var LevelLogic
  13. */
  14. private $levelLogic;
  15. /**
  16. * 获取翻页
  17. * @param Argument $argument
  18. * @return array
  19. */
  20. public function pager(Argument $argument)
  21. {
  22. return $list;
  23. }
  24. /**
  25. * 获取列表
  26. * @param Argument $argument
  27. * @return array
  28. */
  29. public function list(Argument $argument)
  30. {
  31. return $list;
  32. }
  33. /**
  34. * 获取信息(注:通常用于展示用,如果展示和修改可以共用,则使用此方法)
  35. * @param Argument $argument
  36. * @return array
  37. * @throws
  38. */
  39. public function info(Argument $argument)
  40. {
  41. return $info;
  42. }
  43. /**
  44. * 获取信息(注:通常用于表单修改用)
  45. * @param Argument $argument
  46. * @return array
  47. * @throws
  48. */
  49. public function detail(Argument $argument)
  50. {
  51. return $info;
  52. }
  53. /**
  54. * 保存级别
  55. * @param Argument $argument
  56. * @return string
  57. * @throws
  58. */
  59. public function save(Argument $argument)
  60. {
  61. return 'success';
  62. }
  63. /**
  64. * 创建级别
  65. * @param Argument $argument
  66. * @return string
  67. * @throws
  68. */
  69. public function create(Argument $argument)
  70. {
  71. return 'success';
  72. }
  73. /**
  74. * 修改级别
  75. * @param Argument $argument
  76. * @return string
  77. * @throws
  78. */
  79. public function modify(Argument $argument)
  80. {
  81. return 'success';
  82. }
  83. /**
  84. * 删除级别
  85. * @param Argument $argument
  86. * @return string
  87. * @throws
  88. */
  89. public function delete(Argument $argument)
  90. {
  91. return 'success';
  92. }
  93. }

二、解析说明

  1. 每个小功能对应一个Controller文件,类名为:xxxController (红色为具体业务或表的关键词,蓝色固定为Controller)。
  2. 统一继承 BeanCollector,用于实现注解。
  3. 业务核心名称与通常与对应表的核心名一致,如 cms_info —> InfoController
  4. 类名使用大驼峰,方法名使用小驼峰,类内变量使用小驼峰(不区分全局还是私有),禁止使用下线。 | 项目 | 方式 | | —- | —- | | Class - 类名 | 大驼峰 | | Method - 方法名 | 小驼峰 | | 类内变量 | 小驼峰 |
  1. 标准功能的方法名 | 方法名 | 说明 | 对应逻辑层方法 | | —- | —- | —- | | pager | 获取翻页数据,返回List和Pager数据 | getPager | | list | 获取一页数据 | getList | | info | 获取详情数据 | getInfo | | xxx | 获取XXX数据(具体某个处理后的数据) | getXXX | | save | 保存数据,对应前端新增和修改时一并使用 | save | | create | 纯创建数据的保存操作 | create | | modify | 纯修改原有数据的保存操作 | modify |

注:1)原则上 save, create, modify 除需要把业务数据外,仅需要固定返回 「success」;
2)大部分情况是使用 save 代替 insert 和 modify 操作,在save方法内通过主键区分是否更新数据;

  1. 所有参数统一为Argument,(Argument $argument),无其它参数。
  2. 禁止使用方法之上的Controller注解,对路由进行重定向,如下代码,把 /cms/info/modify -> /cms/info/edit ```php <?php namespace App\Module\Cms\Controller;

/**

  • @Controller(“/cms/info”) / class LevelController extends BeanCollector { /*
    • 修改资讯内容
    • @param Argument $argument
    • Controller(“/edit”) — 禁止使用
    • @return string
    • @throws */ public function modify(Argument $argument) { return ‘success’; } } ```
  1. d

三、错误方法命名

  1. levelPager —- 控制层不带get开头
  2. levelList
  3. levelInfo
  4. updateLevel 或 levelUpdate
  5. deleteLevel 或 levelDelete
  6. delete_level 或 level_delete

错误例子1 (1:使用多单词描述方法,2:使用Controller二次重定向):

  1. <?php
  2. namespace App\Module\Sup\Controller\Api\V1;
  3. /**
  4. * @Controller("/sup/api/v1/user")
  5. */
  6. class UserController extends BeanCollector
  7. {
  8. /**
  9. * 转让管理员权限
  10. * @Controller("/transfer/manager") -- 禁止使用
  11. * @param Argument $argument
  12. * @return string
  13. * @throws
  14. */
  15. public function transferManager(Argument $argument)
  16. {
  17. //code
  18. }
  19. }

总结:
1) 在Controller大类里面已经声明是 Level 这个业务核心名,在此类内的方法,不能再出现此核心名;
2)使用单个单词的形式做为访问方法名,禁止使用多个单词或拼音

四、最佳实践

当单个单词的命名方法不能满足要求,需要使用两个单或以上单词才能满足时,应当新开Controller来实现。
如 updateLevelMap

  1. <?php
  2. namespace App\Module\Qto\Controller\Setting;
  3. /**
  4. * @Controller("/qto/level")
  5. */
  6. class LevelController extends BeanCollector
  7. {
  8. /**
  9. * 修改级别映射
  10. * @param Argument $argument
  11. * @return string
  12. * @throws
  13. */
  14. public function modifyLevelMap(Argument $argument)
  15. {
  16. return 'success';
  17. }
  18. }

应该新建 /Qto/Controller/Level/MapController,如:

  1. <?php
  2. namespace App\Module\Qto\Controller\Level;
  3. /**
  4. * @Controller("/qto/level/map")
  5. */
  6. class MapController extends BeanCollector
  7. {
  8. /**
  9. * 修改级别映射
  10. * @param Argument $argument
  11. * @return string
  12. * @throws
  13. */
  14. public function modify(Argument $argument)
  15. {
  16. return 'success';
  17. }
  18. }