В PHP 7, как мне преобразовать эту важную троичную функцию для моего сайта в объединение?

На моем сайте троичные операторы используются повсеместно, и я пытаюсь обновить их, чтобы объединить. Это только один пример, и я надеялся получить советы / предложения по переходу. Дело в том, что coalesce отправляет первое найденное значение / строку, и поэтому я не уверен, возможно ли это с coalesce?

echo (
($member_logged_in == 1)
? '<a href="profile.php">My Profile</a>'
: '<a href="login.php">Login</a>'
);

Можно ли превратить это в объединение или я должен придерживаться троичного оператора?

-1

Решение

Пока вы собираетесь использовать целые или логические значения для управления содержимым шаблона, вы будете застревать с помощью логических операторов.

Единственные две альтернативы — использовать троичный оператор по умолчанию или написать вспомогательную функцию.

// replace boolean with a string or null
$member_logged_in = '<a href="profile.php">My Profile</a>';
//.....
echo $member_logged_in ?: '<a href="login.php">Login</a>';

Используйте логическую функцию

function __($a,$b,$c) { return $a ? $b : $c; }
//........
echo __($member_logged_in, '<a href="profile.php">My Profile</a>', '<a href="login.php">Login</a>');

В идеале не должно быть никаких условий в ваших шаблонах. Вы можете ввести переменную с именем $menu в нем указываются ссылки для отображения, и шаблону должно быть все равно, вошел ли пользователь в систему или нет.

0

Другие решения

?? возвращает первый операнд, если он существует и не равен нулю. Вы хотите вывести строку, если $member_logged_in равно 1,

Вы не должны использовать ?? оператор в этом случае.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector