从字符串生成方法调用 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]);