exakat..2.1.9 reviewexakat..2.1.9 Review

exakat..2.1.9加载不到11个新分析:其中一半用于PHP 8.0,另一半用于代码质量。现在有一个专门的报告来迁移到PHP,并落后不兼容,以及建议。让’潜水在exakat 2.1.9审查中。

迁移到PHP 8.0

exakat..provides a special report : 迁移PHP 8.0。它提供11分析,以准备您的代码到PHP 8.0。不兼容列于 升级 :他们将在当年后的主要PHP文件中进行整数。

要获取报告,您需要 exakat.,然后是以下命令:

php exakat.phar init -p myproject -R <project_URL>
php exakat.phar project -p myproject
php exakat.phar report -p myproject --format Migration80 

At that point, the report is now in the projects/myproject/migration80/ folder. You may open the index.html in that folder to open it in your browsers.

您也可以使用文本版本:

php exakat.phar report -p myproject --format Text -T CompatibilityPHP80

这一个将直接在标准输出中报告相同的信息。

当前的后退不兼容列表在 文件。他们覆盖:

  • $ php_errormsg使用
  • (未命令)使用
  • 连接和加法/比特
  • 不匹配的参数名称
  • PHP 4构造函数

我们始终聆听应追踪和报告的后退不兼容。放纸 @Exakat. on twitter.

PHP假设

我们受到了启发 从假设到断言,rick kuipers。它是PHP世界的经典祸害:对数据的薄弱检查。以下示例是一个订书钉:

<?php

function foo($order) {
    if ($order !== null) {
      $order->getBill();
    }
}
?>

The $order argument is assumed to be either a valid order, or null. So, when it is not null, it must be an order, then methods may be called. This probably works well initially, when foo() is only called with actual orders, until the code drifts, and foo() gets called with other values.

上面的示例与对象有关。然而,假设的口味非常不同。

<?php

function foo($user) {
    if (is_array($user)) {
      // if $x is an array, then it must hold a 'user' index.
      echo $x['user'];
    }
}

function foo(User $user) {
      // if $x is a user object, then it must hold a 'user' property.
      echo $x->name;
}
?>

第二个例子已经覆盖 房地产不足之作 规则,虽然错误地称为方法 不足的类型不足.

The rule here is to use a strong assertion in the code : for example, using instanceof instead of !== null. This will ensure that the rest of the code is valid.

它通常被视为使用这些假设的速度改进,但是对于成熟,代码更稳定,额外检查。

优化explode()与第三个参数

PHP本机功能 爆炸 有一个第三个论点,限制了爆炸块的数量。例如 :

<?php
$string = '1,2,3,4,5';
$array = explode(',', $string, 3);
?>

这将生成一个带有3个元素的数组,而不是5. PHP一旦有足够的元素就会在字符串上工作:这会保存一些无用的工作,因为可能不会使用这些额外的元素。例如 :

<?php
$string = '1,2,3,4,5';
list($a, $b) = explode(',', $string, 2); // No need beyond 2

echo explode(',', $string, 3)[1];       // No need beyond 3

?>

这是一个微优化:然而,爆炸的元素越多,速度越好。它也可能保护代码免受额外的工作,所以它’是一种漂亮的被动安全。

快乐的PHP代码评论

所有402个分析仪都在手册中提供,包括贵族: 大型尝试块):避免使用太大的尝试块。保持它小,并专注于可能提出异常的实际呼叫。

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

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