【发布时间】:2018-12-04 12:03:18
【问题描述】:
我的 switch case 语句存在循环复杂性问题,因此我需要重构 switch/case 代码块。
我试图创建一个带有键的数组并作为设置方法调用的值 即 $this->authChecker->isGranted(User::ROLE_ADMIN)
$attributeResolver = [
self::OPEN_FORM => '$this->authChecker->isGranted(User::ROLE_USER)',
self::CREATE => '$this->authChecker->isGranted(User::ROLE_ADMIN)',
self::EDIT => '...',
self::DISABLE => '...',
];
对于使用这样的调用,
return $attributeResolver[$attribute];
我想将方法调用存储在字符串中以避免不必要的服务调用。
这可能吗?
【问题讨论】:
-
你想把一段字符串当作PHP代码,看看here
-
我想了解您要解决什么问题?您是否有想要更改的当前 switch/case 代码示例并解释一下为什么需要更改它?
-
@MagnusEriksson 我认为您之前删除的评论非常完美。编辑:就我而言,这应该是被接受的答案。
-
这看起来像从你的类常量直接映射到用户角色常量更有意义,当你实际解决它时只需调用
isGranted方法。跨度>
标签: php switch-statement cyclomatic-complexity