我有这样的代码
<?php
$first_condition = time() % 2 == 0;
$second_condition = time() % 3 == 0;
if ($first_condition) {
if ($second_condition) {
$param1 = 'param1_1_1';
} else {
$param1 = 'param1_2_1';
$param2 = 'param2_2_1';
}
} else {
if ($second_condition) {
$param1 = 'param1_1_2';
} else {
$param1 = 'param1_2_2';
$param2 = 'param2_2_2';
}
}
if ($second_condition) {
$param2 = $param1;
}
$total = array(
'param1' => $param2,
'param2' => $param1,
);
我真的知道$param2
无论如何都会被定义,但是PhpStorm说它错了。
是否有任何方法可以将此地方标记为忽略此检查?只有这个地方,而不是全局设置,只有此检查,而不是全部。
答案 0 :(得分:3)
当然 - 您可以对该声明禁止此类警告。
标准程序:
Suppress for statement
选项。上面将在该语句之前添加特殊的PHPDoc注释(/** @noinspection PhpUndefinedVariableInspection */
) - 它告诉IDE忽略该特定问题。
https://www.jetbrains.com/help/phpstorm/suppressing-inspections.html?search=suppress
另一方面(特别是如果它是您编辑的代码/代码):为什么不走一条更安全的路线,只是声明那些带有默认值的$paramX
变量(例如空字符串)条件 ...所以变量确实会被定义?这将防止IDE的这种虚假抱怨(当它试图静态分析这种相当复杂的逻辑时)。
新的子问题:是否可以仅使用
param1
禁用param2
但不允许/** @noinspection PhpUndefinedVariableInspection */
的检查?
是和否。
不更改代码 - 否。这些变量都在一个语句(数组定义)中使用,抑制注释应用于整个语句。
< / LI>是 - 如果您需要这样的单独抑制,请将其拆分为2个语句。