exakat.1.2.9 review

exakat.1.2.9 review

exakat.1.2.9与新分析仪的卡车负荷有关。虽然我们在阿姆斯特丹的柏林和DPC积极为IPC准备,但我们花时间添加不少于5个新分析仪:灵活的HEREDOC语法为PHP 7.3,使用盲芳var,不良紧凑,型暗示暗示参考和类型提示/默认不匹配。那’S将成为最长的exakat 1.2.9审查。

灵活的Heredoc语法

从PHP 7.3开始,Heredoc和Nowdoc语法获得了一些新的灵活性。特别是,结束分隔符不会’必须在自己的一行中,也可能缩进。

 
<?php
$bar = <<<EOT 
   bar 
   EOT;

?>

此外,结束分隔符可能后跟更多代码:它不起作用’T在它之后需要一条新线。

 
<?php

stringManipulator(<<<END
  a b c 
  END);
?>

对缩进存在一些限制,例如结束分隔符必须不比打开分隔符更不用说。而且,压痕可以是空间或制表,但不是也不混合。

阅读整个RFC 灵活的Heredoc和Nowdoc语法

使用盲人var

The blind variables of a loop are variables that are updated each loop. Here, they are $k and $v.

 
<?php

foreach($array as $k => $v) { 
$sum += $array[$k]; }

?>

Just as illustrated, it happens that the index is used on the original array to access a value, while the same value is actually available in the $v variable. This is slower, more cumbersome and harder to read.

这种优化落在微优化领域,但由于它发生在循环中,它可能会很快收取多次,并且最终会带来明显的速度凸点。

类型/默认值不匹配

使用类继承,PHP强制在两个类之间强制性和默认值。例如:

 
<?php

class x { 
  function foo(X $bar = null) {} 
}

class y extends x { 
  function foo(Y $bar = null) {} 
}

?>

在这里,Typehint在X和Class Y之间改变,PHP在注释时间抱怨它。它没有’如果y与x兼容,则为例如共享接口,或者互相扩展。

这里的示例很少发生:同一文件中的两个类不是公共行为。通常,类在不同的文件中被隔离,PHP赢得了’他们两个都在一起直到执行:那’是第一次代码汇集的时候。

最后,这里显示了两个重要的课程:一个,Linting是按文件完成文件,只有在将两个文件放在一起时才检测到一些错误。这适用于每个结构定义,如类,接口,特征等。需要一个工具,使得在开发过程中提前进行检查,以防止稍后和昂贵的反馈。

其次,这应该被单位测试捕获。如果不是这种情况,则不兼容表示遗弃的类。它现在可能很容易被删除,因为它只是没有’t work.

不可思议的紧凑型

目前,Compact()函数并不是’t报告任何缺少的变量。

 
<?php

$a = 'b'; 
$d = compact('a', 'c'); 
// ['a' => 'b'];

?>

这是通过加布里埃尔卡鲁索的注意力,他的RFC: 制作紧凑功能报告未定义的通过变量.

加布里埃尔’S补丁还将处理动态变量,但静态分析能够帮助包含包含字面名称的任何Compact()调用。

大学教师’t forget that 袖珍的 不仅仅用于包装数组:它可以替换更长且重复的语法。 exakat还可以帮助您找到那些语法 可以使用紧凑型

 
<?php

$a = 'b'; $d = ['a' => $a]; 
// ['a' => 'b'];

?> 

类型暗示参考

可能从较旧的时间继承,型暗示的参考是矛盾。对象通过引用传递,因此无需强制执行此类参数的引用。

 
<?php

function foo(Y &$x) {}

?>
 

手册’s section 对象和参考 precises: “PHP引用是一个别名,它允许两个不同的变量写入相同的值。至PHP 5,对象变量并不导致’t将对象本身包含为值了。它只包含一个对象标识符,允许对象访问器找到实际对象。当Abject将由参数发送或分配给另一个变量时,不同的变量不是别名:它们保存标识符的副本,该副本指向同一对象。”

总而言之,这是无用的,并报告的是exakat 1.2.8以来。

快乐的PHP代码评论

所有351分析仪都介绍在文档中,包括令人厌恶的 未知的pcre2选项PCRE2与PCRE1相比,支持不同的选择。你’d在搬到PHP 7.3之前更好地审查了您的Regex:9%的美国受到影响。

您可以查看图库中的所有exakat报告: exakat画廊.

下载exakat.io,安装它 Docker.,升级它‘exakat.phar升级-u’ and like us on GitHub..