从字符串生成方法调用 PHP
Geenrate Method Call from string PHP
我的 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];
我想在字符串中存储方法调用以避免不必要的服务调用。
这可能吗?
您想到了一个解决方案,并且正在询问该解决方案。这称为 XY 问题,很难找到有关主要问题的答案。根据当前要求(可能不准确),您可能需要重新构建 $attributeResolver
:
$attributeResolver = [
self::OPEN_FORM => User::ROLE_USER,
self::CREATE => User::ROLE_ADMIN,
.
.
.
];
并在返回时调用 isGranted
方法,如下所示:
return $this->authChecker->isGranted($attributeResolver[$attribute]);
我的 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];
我想在字符串中存储方法调用以避免不必要的服务调用。
这可能吗?
您想到了一个解决方案,并且正在询问该解决方案。这称为 XY 问题,很难找到有关主要问题的答案。根据当前要求(可能不准确),您可能需要重新构建 $attributeResolver
:
$attributeResolver = [
self::OPEN_FORM => User::ROLE_USER,
self::CREATE => User::ROLE_ADMIN,
.
.
.
];
并在返回时调用 isGranted
方法,如下所示:
return $this->authChecker->isGranted($attributeResolver[$attribute]);