下位互換性のない変更点PHP コアヒアドキュメント/Nowdoc の終了ラベルの解釈ヒアドキュメント/Nowdoc の文法が柔軟になった ことにより、本体の内部に終了ラベルが含まれた ドキュメンテーション文字列は、エラーが発生するか、解釈の振る舞いが変わる可能性があります。 たとえば、以下のような場合です:
FOO
が入ったとしても、以前は特別な意味は何もありませんでした。
ですが、このバージョンからは ヒアドキュメントの終了と解釈され、
後に続く FOO; が syntax error になるでしょう。
この問題は、文字列の内容に決して含まれることのない終了ラベルを選ぶことで常に回避できます。
switch の制御フローを変更する continue 文は警告が出る
ArrayAccess を実装したオブジェクトに対する、 数値形式の文字列キーの解釈が厳密に
static なプロパティが参照の代入によって分裂しなくなったPHP では、子クラスで明示的にオーバーライドされない限り、static なプロパティが継承関係にあるクラスの間で共有されます。しかし、 実装上の副作用により、参照を代入することによって、static なプロパティが異なる値になる可能性がありました。こうした抜け穴がこのバージョンでは修正されました。
配列から返される参照とプロパティのアクセスは、即座に分割される配列から返された参照と、プロパティのアクセスは、 アクセスの一部として別に扱われるようになりました。 これは、配列へのアクセスと、配列の値を使う間に、値を変更できなくなったということです。
Traversable への引数のアンパックを整数でないキーで行うことはサポートされないTraversable への引数のアンパックを整数でないキーで行うコードは動作しなくなりました。 次のようなコードが、 PHP 5.6 から 7.2 の間は偶然動いていました。
その他雑多な変更ext_skel ユーティリティは、 新しいオプションで完全に再設計され、いくつかの古いオプションは削除されました。 このユーティリティは、PHP で書かれており、それ以外の外部への依存はありません。 BeOS のサポートが削除されました。
TypeError は、 compact 関数に渡された未定義の値は、NOTICEレベルの警告を発生させるようになります。
getimagesize 関数と関連する関数は、BMP画像の MIME Type
を
stream_socket_get_name 関数は、
ブラケットでラップされた IPv6 アドレスを返すようになります。
たとえば、 BCMathBCMath 関数 でスローされる全ての例外は、 PHP のエラーハンドリングの機構を使うようになりました。 以前は、いくつかのエラーが stderr に直接出力されていました。 bcmul および bcpow 関数は、指定された精度の数値を返すようになりました。 以前は、返される値の後ろが、0埋めされることで省略される可能性がありました。 IMAP, POP3 および NNTPrsh/ssh ログインはデフォルトで無効になりました。 これらを有効にしたい場合、imap.enable_insecure_rsh を使って下さい。 IMAPライブラリは rsh/ssh コマンドに渡す前にメールボックス名をフィルタしないので、 rsh/ssh を有効にした状態で この関数に信頼できないデータを渡すことは安全ではありません。 マルチバイト文字列
名前付きキャプチャのサポートが追加されたことにより、
MySQL 改良版拡張モジュール
プリペアドステートメント が、カラムに小数の桁数を指定する(e.g.
マイクロ秒を使う場合 MySQL関数 (PDO_MYSQL)
プリペアドステートメント が、カラムに小数の桁数を指定する(e.g.
マイクロ秒を使う場合 リフレクション
リフレクション
を文字列にエクスポートした場合、 Standard PHP Library (SPL)SPL autoloader が例外をスローした場合、後に続く autoloader は実行されなくなりました。以前は、全ての autoloader が実行され、例外がチェインしていました。 SimpleXML数学的な演算 に SimpleXML オブジェクトが含まれていた場合、テキストが int または float のうち、より適切なものとして扱われるようになりました。 以前は値が意図せず int として扱われた場合がありました。 外部から入力されるCookiePHP 7.3.23 以降は、セキュリティ上の理由により、 外部から入力される Cookie の 名前 はurlデコードされなくなりました。 |