PHP 8.2のアルファテストが始まりました

PHP 8.2 プログラミング言語の新しいブランチの最初のアルファ リリースが発表されました。 発売は24月8.2日を予定しております。 すでにテストが可能になっている、または PHP XNUMX での実装が計画されている主なイノベーションは次のとおりです。

  • 個別の型「false」と「null」を追加しました。これらは、たとえば、エラー終了フラグまたは空の値を返す関数に使用できます。 以前は、「false」と「null」は他の型 (「string|false」など) と組み合わせてのみ使用できましたが、現在は個別に使用できるようになりました。 }
  • クラスを読み取り専用としてマークする機能が追加されました。 このようなクラスのプロパティは XNUMX 回のみ設定でき、その後は変更できません。 以前は、個々のクラス プロパティを読み取り専用としてマークできましたが、すべてのクラス プロパティに対してこのモードを一度に有効にできるようになりました。 クラス レベルで「readonly」フラグを指定すると、プロパティがクラスに動的に追加されることもブロックされます。 readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = '間違っています'; // エラー: 動的プロパティ Post::$unknown を作成できません
  • クラス内にプロパティを動的に作成する機能 (上記の例の「post->unknown」など) は非推奨になりました。 PHP 9.0 では、クラス内で最初に定義されていないプロパティにアクセスすると、エラー (ErrorException) が発生します。 プロパティを作成するための __get および __set メソッドを提供するクラス、または stdClass の動的プロパティは変更せずに引き続き動作します。開発者を隠れたバグから保護するために、存在しないプロパティを使用した暗黙的な作業のみがサポートされます。 古いコードの作業を保存するために、動的プロパティの使用を許可する「#[AllowDynamicProperties]」属性が提案されています。
  • エラー時にスタック トレース出力内の機密パラメータをフィルタリングする機能を提供します。 発生したエラーに関する情報が、問題を追跡して開発者に通知するサードパーティ サービスに自動的に送信される場合、特定の情報を切り出すことが必要になる場合があります。 たとえば、ユーザー名、パスワード、環境変数を含むパラメーターをトレースから除外できます。 function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); test('foo', 'パスワード', 'baz'); 致命的なエラー: キャッチされません例外: test.php のエラー:8 スタック トレース: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} が test.php でスローされました8号線で
  • 式「${var}」および ${(var)} を使用して変数値を文字列に置き換える機能は非推奨になりました。 一般的に使用される「{$var}」および「$var」置換のサポートは維持されています。 例: 「こんにちは {$world}」; OK "Hello $world"; OK "こんにちは ${world}"; 非推奨: 文字列での ${} の使用は非推奨です
  • 「call_user_func($callable)」経由で呼び出すことはできますが、「$callable()」の形式での呼び出しをサポートしていない部分的にサポートされている呼び出し可能オブジェクトを非推奨にしました: 「self::method」「parent::method」「static」::method " ["self", "method"] ["parent", "method"] ["static", "method"] ["Foo", "Bar::method"] [new Foo, "Bar::method" 】
  • ロケールに依存しない大文字と小文字の変換を実装しました。 strto lower() や strtoupper() などの関数は、「C」ロケールに設定されているかのように、ASCII 範囲内の文字の大文字と小文字を常に変換するようになりました。

出所: オープンネット.ru

コメントを追加します