PHP:将三元运算符用于赋值以外的其他东西——有效的用例?

PHP: Using the ternary operator for something else than assignments – valid use case?

很遗憾,我还没有找到任何官方资源。

是否允许像这样使用三元运算符来缩短 if/else 语句:

(isset($someVar) ? $this->setMyVar('something') : $this->setMyVar('something else'));

在 PHP 文档中,三元运算符是用这个例子解释的:

$action = (empty($_POST['action'])) ? 'standard' : $_POST['action'];

这让我相信我的用例可能有效,但它并不是真正有效,因为 setter 函数没有 return 任何东西。

可以。来自PHP Doc:

[...] the ternary operator is an expression, and [...] it doesn't evaluate to a variable, but to the result of an expression.

虽然三元组主要用于赋值,但您可以按照您的建议使用它,因为函数调用是一个表达式,因此将评估(并因此执行)适当的函数。

如果您的 setter 函数将 return 一个值,它不会被分配给任何东西,因此会丢失。然而,既然你说你的 setter 没有 return 任何东西,整个三元运算符将计算为空, return 空。没关系。

如果这比常规的更易读 if/else 那就另当别论了。在团队中工作时,我建议坚持使用常规 if/else.

或者,使用这种更常见的语法怎么样?

$this->myVar = isset($someVar) ? 'something' : 'something else';

或者,使用您的 setter:

$this->setMyVar(isset($someVar) ? 'something' : 'something else');