php – 这些嵌套的if / elseif语句有什么更优雅的解决方案?
发布时间:2020-12-13 14:13:13 所属栏目:PHP教程 来源:网络整理
导读:我正在构建一个包含用户个人资料的用户的网站.配置文件中的许多字段都是可选的. 有很多用户生成内容的机会,因此我需要在网站的许多不同位置(评论,帖子等)显示此内容的作者.在用户的个人资料中,他能够(可选地)填写他的“名字”,他的“姓氏”和“显示名称”.
我正在构建一个包含用户个人资料的用户的网站.配置文件中的许多字段都是可选的.
有很多用户生成内容的机会,因此我需要在网站的许多不同位置(评论,帖子等)显示此内容的作者.在用户的个人资料中,他能够(可选地)填写他的“名字”,他的“姓氏”和“显示名称”. 为了显示作者,我编写了一个帮助器方法,该方法查看这些字段的提供数组,并按此优先顺序返回用户最合适的名称: >如果用户填写了display_name,则会显示. 该方法效果很好,但很难看.必须有一种方法来替代嵌套的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” (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |