📜  php 8 匹配表达式切换案例 - PHP (1)

📅  最后修改于: 2023-12-03 15:33:27.970000             🧑  作者: Mango

PHP 8 匹配表达式切换案例

PHP 8 给开发者带来了许多新功能和改进,其中最引人注目的功能之一是匹配表达式。

匹配表达式使得我们可以使用更简单、更直观的方式来进行复杂的模式匹配,从而减少代码量和提高可读性。

下面我们通过一个案例来演示匹配表达式的使用。

案例说明

在本例中,我们有一个简单的类 Person,它有一个 gender 属性来表示一个人的性别,其中可能的值是 malefemale

现在我们要根据性别来输出不同的问候语,如果是男性则输出 "Hello Sir!",如果是女性则输出 "Hello Madam!",如果是其他值则默认输出 "Hello there!"。

在 PHP 8 以前,我们可能会使用 if-else 语句或 switch 语句来实现这个功能:

class Person
{
    public string $gender;
    
    public function sayHello()
    {
        if ($this->gender === 'male') {
            echo 'Hello Sir!';
        } elseif ($this->gender === 'female') {
            echo 'Hello Madam!';
        } else {
            echo 'Hello there!';
        }
    }
}

或者使用 switch 语句:

class Person
{
    public string $gender;
    
    public function sayHello()
    {
        switch ($this->gender) {
            case 'male':
                echo 'Hello Sir!';
                break;
            case 'female':
                echo 'Hello Madam!';
                break;
            default:
                echo 'Hello there!';
                break;
        }
    }
}

虽然这些方法可以达到我们的要求,但是代码看起来比较冗长和繁琐。

现在让我们看看如何使用匹配表达式来简化这个案例。

匹配表达式实现

我们可以使用匹配表达式来实现:

class Person
{
    public string $gender;
    
    public function sayHello()
    {
        echo match ($this->gender) {
            'male' => 'Hello Sir!',
            'female' => 'Hello Madam!',
            default => 'Hello there!',
        };
    }
}

这里我们使用了 match 语句,它接收一个值,并按照 => 分隔的模式和结果进行比较,最后返回匹配结果。如果没有匹配项,则返回 default 分支的结果。

这样我们就可以使用一个简单的语句来完成这个功能,代码看起来也更简洁和易读。

总结

匹配表达式是 PHP 8 引入的一个强大的功能,它可以使我们的代码更加简洁和易读。在涉及到复杂的模式匹配和分支逻辑时,匹配表达式可以提供比传统的 if-elseswitch 语句更好的解决方案。