在 PHP 7 中,我如何将我网站的这个基本三元函数转换为合并?
In PHP 7 how would I convert this essential ternary function for my website to coalesce?
在我的网站上到处都使用三元运算符,我正在考虑尝试将它们更新为合并。这只是一个示例,我希望 tips/suggestions 能够完成过渡。 coalesce 的问题是它会发送它找到的第一个 value/string,所以我不确定 coalesce 是否可行?
echo (
($member_logged_in == 1)
? '<a href="profile.php">My Profile</a>'
: '<a href="login.php">Login</a>'
);
是否可以将其转换为合并,还是我应该坚持使用三元运算符?
??
returns 第一个操作数如果存在且不为空。如果 $member_logged_in
等于 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
的变量,它保存要显示的链接,并且模板不应该关心成员是否已登录。
在我的网站上到处都使用三元运算符,我正在考虑尝试将它们更新为合并。这只是一个示例,我希望 tips/suggestions 能够完成过渡。 coalesce 的问题是它会发送它找到的第一个 value/string,所以我不确定 coalesce 是否可行?
echo (
($member_logged_in == 1)
? '<a href="profile.php">My Profile</a>'
: '<a href="login.php">Login</a>'
);
是否可以将其转换为合并,还是我应该坚持使用三元运算符?
??
returns 第一个操作数如果存在且不为空。如果 $member_logged_in
等于 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
的变量,它保存要显示的链接,并且模板不应该关心成员是否已登录。