我在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];
我想将方法调用存储在字符串中,以避免不必要的服务调用。
这可以吗?
答案 0 :(得分:3)
您想到了一个解决方案,而您正在询问该解决方案。这称为XY问题,这使得很难找到有关主要问题的答案。根据当前的要求(可能不够精确),您可能希望像这样重新构建$attributeResolver
:
$attributeResolver = [
self::OPEN_FORM => User::ROLE_USER,
self::CREATE => User::ROLE_ADMIN,
.
.
.
];
并在返回时按如下所示调用isGranted
方法:
return $this->authChecker->isGranted($attributeResolver[$attribute]);