做某事,返回或继续,PHP单线语法



我正在寻找一个单线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语句。

最新更新