PHP - 切换或匹配多个选项的最佳实践

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

这是我的代码:

switch($type)
{
    case 'all':
        one();
        two();
        three();
        break;
    case 'only_important':
        one();
        two();
        break;
    case 'first':
        one();
        break;
    case 'second':
        two();
        break;
    case 'third':
        three();
        break;
}

您有建议改进这一点,以避免重复函数名称吗?

php switch-statement match
1个回答
0
投票

好吧,让我展示一下我的想法,尽管我仍然认为你可以提供更多信息。

您调用的功能似乎很重要,并且您希望确保不会错过组类别中的任何功能。为什么不创建一个数组呢?像这样的东西:

$branches = ['one',  => ['type' => 'first',  'important' => TRUE], 
             'two',  => ['type' => 'second', 'important' => TRUE],
             'three' => ['type' => 'third',  'important' => FALSE]];
             
switch($type)
{
    case 'all':
        foreach ($branches as $functionName => $branch) {
            $functionName();
        }
        break;
    case 'only_important':
        foreach ($branches as $functionName => $branch) {
            if ($branch['important']) {
                $functionName();
            }    
        }
        break;
    default :
        foreach ($branches as $functionName => $branch) {
            if ($type == $branch['type']) {
                $functionName();
            }    
        }
        break;
}

我选择“分支”这个词来理解你的代码,但你可以选择其他任何东西。

现在,当您想要添加新分支时,您只需要编辑数组,这可能不太容易出错。您甚至可以毫无问题地将新组添加到阵列中。

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