Vimeo会社
詩篇は、誤ったタイプの使用法に関連する問題のほとんどと、さまざまな問題を特定しています。
さらに、安全なプログラミング ツールが提供されており、
/** @var 文字列|null */
$a = foo();
/** @var string $a */
echo strpos($a, 'hello');
/** @psalm-assert-if-true B $a */
関数 isValidB(A $a) : bool {
$a インスタンスを返します && $a->isValid();
}
見つかった問題の排除を自動化するために、プラグインとプラグインをサポートする Psalter ユーティリティが提供されています。
詩篇の新刊では
検証は、echo、exec、include、header などの関数を使用するときに使用されます。 エスケープの必要性を分析する際には、テキスト、SQL、HTML、シェルコードを含む文字列、認証パラメータを含む文字列などのデータ型が考慮されます。 提案されたモードを使用すると、クロスサイト スクリプティング (XSS) や SQL 置換につながるコード内の脆弱性を特定できます。
さらに、注目できるのは、
-
有効化 JITコンパイラ を使用すると生産性が向上します。 - サポート
共用体型 、XNUMX つ以上の型のコレクションを定義します (たとえば、「public function foo(Foo|Bar $input): int|float;」)。 - サポート
属性 Docblock 構文を使用せずにメタデータ (型情報など) をクラスにバインドできるようにする (アノテーション)。 -
短縮された構文 クラス定義を使用すると、コンストラクターの定義とプロパティを組み合わせることができます。 - 新しい戻り値の型 -
静的な . - 新しいタイプ -
混合 、関数が異なるタイプのパラメーターを受け入れるかどうかを判断するために使用できます。 - 式
投げる 例外を処理するため。 -
ウィークマップ ガベージ コレクション中に犠牲になる可能性のあるオブジェクトを作成するため (たとえば、不要なキャッシュを保存するため)。 -
機会 オブジェクトに対して式「::class」を使用します (get_class() の呼び出しに似ています)。 -
機会 変数にバインドされていない例外の catch ブロック内の定義。 -
機会 関数パラメータのリストの最後の要素の後にカンマを残します。 - 新しいインターフェース
ストリング可能 文字列に変換できる文字列タイプまたはデータを識別します (__toString() メソッドが利用可能です)。 - 新機能
str_contains() 、部分文字列の出現を決定する 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" などの算術演算およびビット演算をチェックすると、エラーが発生します。 -
実装済み 安定した並べ替えアルゴリズム。異なる実行間でも同一の値の順序が保持されます。
出所: オープンネット.ru