我正在寻找一个单线php语法,可以让我这样做:
function printMsg($do_print, $msg) {
if ($do_print) {
echo "$msgn";
}
return $do_print;
}
function test() {
printMsg(false, 'foo') and return; <== need a one liner for this
printMsg(true, 'bar') and return;
}
echo "before"; // before
test(); // bar
echo "after"; // after
到目前为止,我最好的是:
if (printMsg(false, 'foo')) return;
问题是,在重新格式化了我的代码后,我的IDE(NetBeans)将其放在两行上。这不是戏剧性的,但是我有一个代码,带有许多这样的电话,并且在一行上保持单线会使它更加简洁/可读。
我要实现的目标还有其他PHP中的其他单行语法吗?
您可以尝试
function printMsg($msg, $print = false) {
$print and print("$msgn");
return $print;
}
function test($r = null) {
printMsg('foo') and $r = false;
printMsg('bar', true) and $r = true;
return $r;
}
echo "<pre>";
echo "beforen"; // before
test(); // bar
echo "aftern"; // after
输出
before
bar
after
如果我要正确阅读您的问题,则应该能够以:
来完成此操作。function test() {
printMsg(false, 'foo') || printMsg(true, 'bar');
}
在这里,如果第一个printMsg()
返回true,则将不执行第二个printMsg()
。如果返回false,则将执行第二个printMsg()
。
示例:
printMsg(false, 'foo') || printMsg(true, 'bar'); // bar
printMsg(true, 'foo') || printMsg(true, 'bar'); // foo
printMsg(false, 'foo') || printMsg(false, 'bar') || printMsg(true, 'ok'); // ok
但是,Whitespace不需要任何费用,此代码远非可读。在六个月内,您必须考虑片刻才能弄清楚它的作用,而在您之后,任何人都不太可能乍一看。
我强烈建议您将代码分配到几行,只使用if
语句。