PHP 8.4.x で推奨されなくなる機能
PHP コア
暗黙的な nullable パラメータ
パラメータのデフォルト値が null
の場合、
その型は暗黙的に null を受け入れるように拡張されます。
次のコードは:
このように:
またはこのように修正する必要があります。
しかし、そのようなパラメータ宣言の後に必須パラメータが続く場合:
このように:
またはこのように修正する必要があります。
なぜなら、必須パラメータの前に任意パラメータを置くことは非推奨だからです。
ゼロを負の数でべき乗
ある数の負のべき乗は、
その数の正のべき乗の逆数と同等です。
例えば、10-2
は
1 / 102
と同等です。
つまり、0
の負のべき乗は
0
で割ることを意味します。例えば、
0-2
は
1 / 02
、または
1 / 0
となります。以上より、この動作は非推奨とされました。
これはべき乗演算子 **
と
pow 関数に影響します。
IEEE 754 のセマンティクスが必要な場合は、新しい
fpow 関数を使用してください。
クラス名をアンダースコア _
とする
クラス名を _
とすることは、現在非推奨となっています:
注意:
クラス名がアンダースコアで始まるのは、
非推奨ではありません:
trigger_error で
E_USER_ERROR
を使用
trigger_error で
error_level
として
E_USER_ERROR
を指定するのは非推奨となりました。
そのような場合、例外をスローするか、
exit を呼び出すように修正すべきです。
E_STRICT
定数
E_STRICT
エラーレベルが削除されたため、
この定数は非推奨となりました。
cURL
CURLOPT_BINARYTRANSFER
定数は非推奨となりました。
Date
DatePeriod::__construct(string $isostr, int $options = 0)
の
シグネチャは非推奨となりました。
代わりに DatePeriod::createFromISO8601String を使用してください。
SUNFUNCS_RET_TIMESTAMP
、
SUNFUNCS_RET_STRING
、
および SUNFUNCS_RET_DOUBLE
定数は非推奨となりました。
これは PHP 8.1.0 で date_sunset と
date_sunrise 関数が非推奨となったことに伴うものです。
DBA
dba_key_split に null
または false
を渡すことは
非推奨となりました。
これらの場合、常に false
を返していました。
DOM
DOM_PHP_ERR
定数は非推奨となりました。
以下のプロパティは正式に非推奨となりました:
- DOMDocument::$actualEncoding
- DOMDocument::$config
- DOMEntity::$actualEncoding
- DOMEntity::$encoding
- DOMEntity::$version
Hash
ハッシュ関数に無効なオプションを渡すことは非推奨となりました。
Intl
intlcal_set または
IntlCalendar::set
を 2 つを超える引数で呼び出すことは非推奨となりました。
代わりに IntlCalendar::setDate または
IntlCalendar::setDateTime を使用してください。
intlgregcal_create_instance または
IntlGregorianCalendar::__construct
を 2 つを超える引数で呼び出すことは非推奨となりました。
代わりに IntlGregorianCalendar::createFromDate または
IntlGregorianCalendar::createFromDateTime を使用してください。
LDAP
ldap_connect を
2 つを超える引数で呼び出すことは非推奨となりました。
代わりに ldap_connect_wallet を使用してください。
ldap_exop
を 4 つを超える引数で呼び出すことは非推奨となりました。
代わりに ldap_exop_sync を使用してください。
MySQLi
mysqli_ping 関数および
mysqli::ping メソッドは、
PHP 8.2.0 で再接続機能が削除されたため、非推奨となりました。
mysqli_kill 関数および
mysqli::kill メソッド
は非推奨となりました。
この機能が必要な場合は、代わりに SQL の KILL
コマンドを使用できます。
mysqli_refresh 関数および
mysqli::refresh メソッドは
非推奨となりました。
この機能が必要な場合は、代わりに SQL の FLUSH
コマンド
を使用できます。
すべての MYSQLI_REFRESH_*
定数も非推奨となりました。
mysqli_store_result に
mode
パラメータを明示的に渡すことは非推奨となりました。
この関数のために用意されていたMYSQLI_STORE_RESULT_COPY_DATA
定数も
非推奨となりました。
PDO_PGSQL
ドル記号で囲まれた文字列の中で
エスケープされた疑問符(??
)を使用することは非推奨となりました。
PDO_PGSQL はドル記号で囲まれた文字列をサポートする独自の SQL パーサーを持つようになったため、
それらの中で疑問符をエスケープする必要はなくなりました。
PGSQL
pg_fetch_result、
pg_field_prtlen、
および pg_field_is_null の 2 引数のシグネチャは非推奨となりました。
代わりに row
を null
に設定した 3 引数のシグネチャを
使用してください。
Random
lcg_value は非推奨となりました。
この関数は複数の点で問題があるためです。
代わりに Random\Randomizer::getFloat を使用してください。
Reflection
ReflectionMethod::__construct を
1 つの引数で呼び出すことは非推奨となりました。
代わりに ReflectionMethod::createFromMethodName を使用してください。
SOAP
SoapServer::addFunction に
int を渡すことは非推奨となりました。
すべての PHP 関数を提供する必要がある場合は、
get_defined_functions が返す配列をフラット化してください。
SOAP_FUNCTIONS_ALL
定数は非推奨となりました。
SPL
SplFixedArray::__wakeup メソッドは
非推奨となりました。代わりに
SplFixedArray::__serialize と
SplFixedArray::__unserialize
をオーバーライドしてください。
SplFileObject::setCsvControl、
SplFileObject::fputcsv、および
SplFileObject::fgetcsv で
escape
パラメータのデフォルト値を利用することは非推奨となりました。
引数または名前付き引数で明示的に指定する必要があります。
これは、 SplFileObject::setCsvControl で
新しいデフォルト値を設定した場合、 SplFileObject::fputcsv および
SplFileObject::fgetcsv には適用されません。
Standard
stream_context_set_option を
2 つの引数で呼び出すことは非推奨となりました。
代わりに stream_context_set_options を使用してください。
unserialize で大文字の S
タグを使用して文字列を
アンシリアライズすることは非推奨となりました。
fputcsv、
fgetcsv、および
str_getcsv の
escape
パラメータのデフォルト値を利用することは非推奨となりました。
引数または名前付き引数で明示的に指定する必要があります。
XML
xml_set_object 関数は非推奨となりました。
callable でない文字列を
xml_set_*
関数に渡すことは非推奨となりました。