维梅奥公司
诗篇指出了大多数与不正确类型使用相关的问题,以及各种
此外,还提供安全编程工具以允许
/** @var string|null */
$a = foo();
/** @var 字符串 $a */
echo strpos($a, '你好');
/** @psalm-assert-if-true B $a */
函数 isValidB(A $a) : bool {
return $a instanceof B && $a->isValid();
}
为了自动消除发现的问题,提供了 Psalter 实用程序,它支持插件和
在新一期的诗篇中
使用 echo、exec、include 和 header 等函数时会使用验证。 在分析是否需要转义时,会考虑文本、带有 SQL、HTML 和 Shell 代码的字符串、带有身份验证参数的字符串等数据类型。 建议的模式允许您识别代码中导致跨站点脚本 (XSS) 或 SQL 替换的漏洞。
另外,还可以注意到
-
包容 即时编译器 ,使用它可以提高生产力。 - Поддержка
联合类型 ,定义两种或多种类型的集合(例如,“public function foo(Foo|Bar $input): int|float;”)。 - Поддержка
属性 (注释)允许您将元数据(例如类型信息)绑定到类,而无需使用 Docblock 语法。 -
缩短语法 类定义,允许您组合构造函数和属性的定义。 - 新的返回类型 -
静止 . - 新类型-
杂 ,可用于判断函数是否接受不同类型的参数。 - 表达
扔 来处理异常情况。 -
弱映射 创建可以在垃圾收集期间牺牲的对象(例如,存储不必要的缓存)。 -
机会 对对象使用表达式“::class”(类似于调用 get_class())。 -
机会 未绑定到变量的异常的 catch 块中的定义。 -
机会 在函数参数列表中的最后一个元素后面留下一个逗号。 - 新界面
可串接 标识任何可以转换为字符串的字符串类型或数据(可以使用 __toString() 方法)。 - 新功能
海峡包含() ,strpos 的简化类似物,用于确定子字符串的出现,以及函数 str_starts_with() 和 str_ends_with() 用于检查字符串开头和结尾的匹配。 - 新增功能
fdiv() ,它执行除法运算,除以零时不会抛出错误。 -
改变了 字符串连接逻辑。 例如,表达式 'echo "sum:" 。 $a + $b' 之前被解释为 'echo ("sum: " . $a) + $b',在 PHP 8 中将被视为 'echo "sum: " 。 ($a + $b)'。 -
收紧 检查算术和位运算,例如表达式“[] % [42]”和“$object + 4”将导致错误。 -
实施的 一种稳定的排序算法,其中相同值的顺序在不同的运行中得以保留。
来源: opennet.ru