在 PHP 中检查参数选项的另一种方法

问题描述 投票:0回答:1

我想知道是否有另一种方法来检查传递的字符串参数。目前我使用包含所有有效选项的数组列表来执行此操作。为此,我使用 in_array 函数。

Class Foo {

  private $allowedOptions = ['a','b','c'];

  public function baz(string $parameter): array
  {  
    if (!in_array($parameter, $this->allowedOptions))
    {
      return [];
    }
    
    return doSomething($parameter);
  }
}

一个想法:是否也可以使用 Enum?

php enums
1个回答
0
投票

定义一个 Enum 来表示您的选项:

enum Option: string {
    case A = 'a';
    case B = 'b';
    case C = 'c';
}

然后更新您的类以使用此Enum

class Foo {

    public function baz(string $parameter): array {  
        // you can chekc here if the parameter is a valid Enum case
        if (!Option::tryFrom($parameter)) {
            return [];
        }
        
        return $this->doSomething($parameter);
    }

}

Option::tryFrom($parameter)
将检查传递的
$parameter
是否是 Option Enum 的有效情况。如果
$parameter
无效,函数将返回一个空数组。否则,它将执行您的
doSomething
方法。

© www.soinside.com 2019 - 2024. All rights reserved.