Вызов метода Geenrate из строки PHP - PullRequest
0 голосов
/ 04 декабря 2018

У меня проблема Cyclomatic Complexity с оператором 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];

Я хочу сохранить вызов метода в строке, чтобыИзбегайте ненужных звонков в службу поддержки.

Это возможно?

1 Ответ

0 голосов
/ 04 декабря 2018

Вы подумали о решении и спрашиваете об этом решении.Это называется проблемой XY, которая затрудняет поиск ответа об основной проблеме.С текущими требованиями (которые могут быть не точными) вы можете пересоздать $attributeResolver следующим образом:

$attributeResolver = [
    self::OPEN_FORM => User::ROLE_USER,
    self::CREATE => User::ROLE_ADMIN,
    .
    .
    .
];

и при возврате вызовите метод isGranted следующим образом:

return $this->authChecker->isGranted($attributeResolver[$attribute]);
...