維梅奧公司
詩篇指出了大多數與不正確類型使用相關的問題,以及各種
此外,還提供安全編程工具以允許
/** @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