Ben kullanıcı profilleri ile kullanıcıları içeren bir web sitesi inşa ediyorum. Profilde alanların çoğu isteğe bağlıdır.
Orada kullanıcı tarafından oluşturulan içeriğin bir sürü için bir fırsat olduğunu ve bu yüzden sitede (yorum, mesaj, vb) pek çok farklı yerlerde bu içeriğin yazarı göstermek gerekir. Kullanıcının profilinde, o (isteğe bağlı) onun "ilk isim", onun "soyadını" ve "görünen ad" doldurmak mümkün değildir.
Yazar görüntülemek için, ben bu alanlarda sağlanan bir dizi bakar ve tercih bu sırayla, kullanıcı için en uygun adını döndüren bir yardımcı yöntem yazdı:
- Kullanıcı
display_name
doldurdum, bu görüntülenir. - Kullanıcı
first_name
velast_name
doldurdum, ancak hiçbirdisplay_name
, hem adlarını görüntüler eğer - Kullanıcı sadece doldurulacak ise
first_name
, gösterecekfirst_name
. - Kullanıcı sadece doldurulacak ise
last_name
, göstereceklast_name
. - Bütün bunlardan başarısız olursa, bir kullanıcı kimliği görüntülenir yani
user123
- Dizi anahtarları hiçbiri mevcut veya parametre NULL ise, isim
NULL
olarak görüntülenir
Yöntem harika çalışıyor, ama çirkin. If / else ifadeleri iç içe bir alternatif olan bu güzelleştirmek için bir yolu olmalı.
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;
}