クオートしない文字列は、その名前のグローバル定数が定義されていない場合は単なる文字列という扱いになります。 このとき、いままでは E_NOTICE が発生していました。 PHP 7.2.x 以降は、E_WARNING が発生するようになります。 次のメジャーバージョンアップ後は Error 例外が発生するようになります。
E_NOTICE
E_WARNING
<?php var_dump(NONEXISTENT); /* 出力: Warning: Use of undefined constant NONEXISTENT - assumed 'NONEXISTENT' (this will throw an Error in a future version of PHP) in %s on line %d string(11) "NONEXISTENT" */
GD 拡張モジュールの png2wbmp および jpeg2wbmp 関数は非推奨となり、次のPHPのメジャーバージョンアップで削除される予定です。
INTL_IDNA_VARIANT_2003
Intl 拡張モジュール では、INTL_IDNA_VARIANT_2003 バリアントは非推奨になりました。 これは idn_to_ascii および idn_to_utf8 関数の デフォルト値として現在使われています。PHP 7.4 ではこのデフォルト値が INTL_IDNA_VARIANT_UTS46 に変更される予定ですし、 PHP の次のメジャーバージョンアップでは、 INTL_IDNA_VARIANT_2003 が削除される予定です。
INTL_IDNA_VARIANT_UTS46
__autoloadメソッドは非推奨になりました。なぜなら、この関数は (autoloader をチェインできない点で) spl_autoload_register に劣っていますし、これら2つの autoload のやり方には互換性がないからです。
track_errors
$php_errormsg
php.ini で track_errors の設定が有効になると、 致命的でないエラーが起きた場合に、$php_errormsg 変数がローカルスコープに生成されます。 このようなエラー情報を収集するのに望ましい方法は、error_get_last 関数を使うことなので この機能は非推奨になりました。
(eval 関数のラッパーなので) この関数にはセキュリティ上の問題があるため、非推奨になりました。 好ましい代替は 無名関数 です。
mbstring.func_overload
この設定が有効になった環境で使われる、文字列ベースの関数の相互運用上の問題により、この設定は非推奨になりました。
(unset)
あらゆる値を (unset) キャストすると null になりますが、この余分な機能は非推奨になりました。
null
2番目の引数を指定しないで parse_str 関数を使うと、 これが使われた関数内部のシンボルテーブルを収集してしまいます。 これはセキュリティ上の問題があるため、2番目の引数を指定しないで parse_str を使うのは非推奨になりました。この関数の2番目の引数は、クエリストリングを配列に設定してくれる ので、常に設定すべきです。
この関数は、外部に公開されていない、プラットフォーム依存のlimbサイズの範囲に基づいて ランダムな数を生成しています。このため、この関数は非推奨になりました。GMP 拡張モジュールを使って ランダムな数値を生成する望ましいやり方は、 gmp_random_bits および gmp_random_range を使うことです。
この関数は、通常の foreachよりもループが遅く、PHPそのものの変更に伴って 実装上の問題を引き起こしたことから、非推奨になりました。
foreach
assert で eval させるには、この関数に文字列を渡す必要がありました。 リモートからコードを実行される可能性があるので、この関数に文字列を渡すのは非推奨になりました。boolean 値を渡すのが お勧めです。
$errcontext
$errcontext 引数には、エラーが起きた場所の全てのローカル変数 が含まれています。これは使われることが少ないことと、PHP の内部的な最適化に問題を 引き起こすため、非推奨になりました。エラーが起きた場所のローカル変数の情報を取得 するには、デバッガを使うべきです。
read_exif_data 関数は非推奨になりました。 代わりに exif_read_data 関数を使ってください。