Я создаю веб-сайт, содержащий пользователей с профилями пользователей. Многие поля в профиле необязательны.
Существует возможность для большого количества пользовательского контента, поэтому мне нужно отображать автора этого контента во многих различных местах сайта (комментарии, сообщения и т. Д.). В профиле пользователя он может (при желании) указать свое «имя», «фамилию» и «отображаемое имя».
Чтобы отобразить автора, я написал вспомогательный метод, который просматривает предоставленный массив этих полей и возвращает наиболее подходящее имя для пользователя в следующем порядке предпочтений:
display_name
, это будет отображаться. first_name
и last_name
, но нет display_name
, будут отображаться оба имени first_name
, отобразится first_name
. last_name
, будет отображаться last_name
. user123
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;
}