Php 这是三元运算符的可接受用例吗?

Php 这是三元运算符的可接受用例吗?,php,ternary-operator,Php,Ternary Operator,我使用三元运算符执行一个非常简单的条件操作。它工作得很好,但我的IDE(PHPStorm)将其报告为错误。我得到的错误是: 'void'方法使用的'performation'结果 我使用的代码是: ($this->doThis ? $class->performAction() : $class->performDifferentAction()); PHPStorm中的错误显然是错误的;我没有在任何地方使用void方法的结果。我只是在调用这些方法,结果正如预期的那样。我只是

我使用三元运算符执行一个非常简单的条件操作。它工作得很好,但我的IDE(PHPStorm)将其报告为错误。我得到的错误是:

'void'方法使用的'performation'结果

我使用的代码是:

($this->doThis ? $class->performAction() : $class->performDifferentAction());
PHPStorm中的错误显然是错误的;我没有在任何地方使用void方法的结果。我只是在调用这些方法,结果正如预期的那样。我只是用三元运算符作为这方面的简写:

if($this->doThis)
{
    $class->performAction();
}
else
{
    $class->performDifferentAction();
}
我认为这看起来是三元运算符的一个有效用例。它不模糊,易于阅读和简短


然而,这是一个设计缺陷吗

三元运算符是一个返回结果的表达式。它的用途是在需要“内联条件”时使用,否则需要您创建一个或两个附加变量。因此,无论何时使用三元运算符,都需要使用它的结果

例如,你不会写这个,是吗

1 + 2;  // result not used, does nothing
实际上,您在那里做的是编写这样的代码,但会给它带来副作用:

因此,IDE敦促您使用
if..else
显式编写副作用代码。它更直接地表达了你在那里做什么


话虽如此,最终还是取决于你和你的风格。PhpStorm有自己的偏好;如果要覆盖它们,请关闭该特定检查。然而,这种检查是为了帮助您编写更好的代码;如果您真的忘记在某处指定返回值,它会警告您。

三元运算符是一个返回结果的表达式。它的用途是在需要“内联条件”时使用,否则需要您创建一个或两个附加变量。因此,无论何时使用三元运算符,都需要使用它的结果

例如,你不会写这个,是吗

1 + 2;  // result not used, does nothing
实际上,您在那里做的是编写这样的代码,但会给它带来副作用:

因此,IDE敦促您使用
if..else
显式编写副作用代码。它更直接地表达了你在那里做什么


话虽如此,最终还是取决于你和你的风格。PhpStorm有自己的偏好;如果要覆盖它们,请关闭该特定检查。然而,这种检查是为了帮助您编写更好的代码;如果您真的忘记在某处指定返回值,它会警告您。

三元运算符是一个返回结果的表达式。它的用途是在需要“内联条件”时使用,否则需要您创建一个或两个附加变量。因此,无论何时使用三元运算符,都需要使用它的结果

例如,你不会写这个,是吗

1 + 2;  // result not used, does nothing
实际上,您在那里做的是编写这样的代码,但会给它带来副作用:

因此,IDE敦促您使用
if..else
显式编写副作用代码。它更直接地表达了你在那里做什么


话虽如此,最终还是取决于你和你的风格。PhpStorm有自己的偏好;如果要覆盖它们,请关闭该特定检查。然而,这种检查是为了帮助您编写更好的代码;如果您真的忘记在某处指定返回值,它会警告您。

三元运算符是一个返回结果的表达式。它的用途是在需要“内联条件”时使用,否则需要您创建一个或两个附加变量。因此,无论何时使用三元运算符,都需要使用它的结果

例如,你不会写这个,是吗

1 + 2;  // result not used, does nothing
实际上,您在那里做的是编写这样的代码,但会给它带来副作用:

因此,IDE敦促您使用
if..else
显式编写副作用代码。它更直接地表达了你在那里做什么


话虽如此,最终还是取决于你和你的风格。PhpStorm有自己的偏好;如果要覆盖它们,请关闭该特定检查。然而,这种检查是为了帮助您编写更好的代码;如果您真的忘记在某个地方指定返回值,它会警告您。

这看起来不是一个有效的案例-条件运算符应该在某个地方返回某些内容。我在哪里可以找到该义务?这不是义务,这是常识。根据定义,表达式必须返回一个值。如果我是这一行的代码审阅者,我不会让它通过。这看起来不像是一个有效的案例——条件运算符应该在某个地方返回某些内容。我在哪里可以找到该义务?这不是义务,这是常识。根据定义,表达式必须返回一个值。如果我是这一行的代码审阅者,我不会让它通过。这看起来不像是一个有效的案例——条件运算符应该在某个地方返回某些内容。我在哪里可以找到该义务?这不是义务,这是常识。根据定义,表达式必须返回一个值。如果我是这一行的代码审阅者,我不会让它通过。这看起来不像是一个有效的案例——条件运算符应该在某个地方返回某些内容。我在哪里可以找到该义务?这不是义务,这是常识。根据定义,表达式必须返回一个值。如果我是这一行的代码审查员,我不会让它通过。你的两个例子和我的有区别。你的代码没有任何作用;我的是。(嗯,
someFunc
可能会做些什么,但是
1+
显然是无用的。在我的代码片段中没有“无用”的代码。)这正是问题所在,
1+someFunc()
会做些什么吗?未使用返回值,因此它不做任何操作。。。还是这样?您的代码是相同的:
$foo?1:bar()
。Sooooo。。。。是不是有一个简单的输入错误而你忘了使用