php – 这些嵌套的if / elseif语句有什么更优雅的解决方案?

前端之家收集整理的这篇文章主要介绍了php – 这些嵌套的if / elseif语句有什么更优雅的解决方案?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在构建一个包含用户个人资料的用户的网站.配置文件中的许多字段都是可选的.

有很多用户生成内容的机会,因此我需要在网站的许多不同位置(评论,帖子等)显示内容的作者.在用户的个人资料中,他能够(可选地)填写他的“名字”,他的“姓氏”和“显示名称”.

为了显示作者,我编写了一个帮助器方法,该方法查看这些字段的提供数组,并按此优先顺序返回用户最合适的名称

>如果用户填写了display_name,则会显示.
>如果用户填写了first_name和last_name,但没有显示display_name,则会显示这两个名称
>如果用户只填写first_name,它将显示first_name.
>如果用户只填写last_name,它将显示last_name.
>如果所有其他方法都失败,将显示用户ID,即user123
>如果没有数组键,或者参数为NULL,则名称显示为NULL

方法效果很好,但很难看.必须有一种方法来替代嵌套的if / else语句来美化它.

public function nameify($names = NULL) {
    $name = '';
    if (!empty($names)) {
        if (!empty($names['display_name'])) {
            $name = $names['display_name'];
        } elseif (!empty($names['first_name'])) {
            $name = $names['first_name'];
            if (!empty($names['last_name'])) {
                $name .= ' ' . $names['last_name'];
            }
        } elseif (!empty($names['last_name'])) {
            $name = $names['last_name'];
        }

        if (empty($name) && !empty($names['id'])) {
            $name = 'user' . $names['id'];
        } else {
            $name = 'NULL';
        }
    } else {
        $name = 'NULL';
    }
    return $name;
}
public function nameify($names = NULL) {
    if ($names) {
        if (!empty($names['display_name'])) {
            return $names['display_name'];
        }
        if (!empty($names['first_name'])) {
            $name = $names['first_name'];
        } 
        if (!empty($names['last_name'])) {
            $name .= ' ' . $names['last_name'];
        }
        if (empty($name) && !empty($names['id'])) {
            $name = 'user' . $names['id'];
        }
    }
    return $name ? ltrim($name) : 'NULL';
}

首先设置默认值,如果没有其他匹配则返回.然后,因为我们总是希望返回显示名称,如果我们有这样做.

编辑:调整以防止返回“NULL”

猜你在找的PHP相关文章