0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHP7.0→PHP8系で削除された機能まとめ(移行前に確認しておきたいポイント)

0
Posted at

はじめに

PHP7.0 → PHP8系(8.0〜8.3)へアップグレードする際、
「破壊的変更」だけでなく 完全に削除された機能 にも注意が必要です。

これまで「非推奨(deprecated)」だったものが、
PHP8では本当に使えなくなっています。

この記事では、移行前に確認しておきたい
削除された主な機能 をまとめます。


1. create_function の削除

概要

$func = create_function('$a', 'return $a * 2;');

PHP7では既に非推奨でしたが、
PHP8では完全に削除されました。

代替

無名関数(クロージャ)を使用します。

$func = function ($a) {
    return $a * 2;
};

ほぼ機械的に置き換え可能です。


2. each() の削除

概要

each($array);

内部ポインタを使った古い配列ループ関数。
PHP8で削除されました。

代替

foreach ($array as $key => $value) {
}

現在では foreach が標準的です。


3. __autoload の削除

概要

function __autoload($class) {
}

旧式のオートロード関数は削除されました。

代替

spl_autoload_register(function ($class) {
});

実務ではComposer利用が一般的なので、
影響は少ないケースが多いです。


4. 古いマジッククォート関連の完全削除

  • get_magic_quotes_gpc()
  • get_magic_quotes_runtime()

過去の名残機能は完全に削除されています。

現在では不要なので、
削除対応するのが基本です。


5. FILTER_SANITIZE_STRING の削除(PHP8.1)

filter_var($value, FILTER_SANITIZE_STRING);

セキュリティ的に誤解を招くため削除されました。

代替

用途に応じて

  • htmlspecialchars
  • FILTER_SANITIZE_SPECIAL_CHARS

などを明示的に使い分けます。


6. リソースからオブジェクトへの変更

いくつかの内部リソース型が
オブジェクトへ変更されています。

例:

  • CurlHandle
  • GdImage

is_resource() に依存しているコードは注意が必要です。


7. ext/mysql の完全廃止(過去バージョンからの流れ)

古い mysql_* 系関数は既に削除済みですが、
レガシー環境ではまだ残っていることがあります。

必ず

  • mysqli
  • PDO

へ移行しましょう。


8. その他削除・整理されたもの

  • 一部の古いオプション
  • 古い暗号化関連関数
  • 非推奨だったINI設定の削除

「長年deprecatedだったもの」が
整理されたイメージです。


移行時のチェックポイント

削除機能は、実行時エラーというよりも

  • 実行した瞬間 Fatal
  • 関数が存在しないエラー

になります。

移行前に以下を実施すると安心です。

  • grep で対象関数を検索
  • 静的解析ツール(PHPStan / Psalm)でチェック
  • PHP8環境で一度実行してみる

まとめ

PHP8では

  • 古い書き方
  • 長年非推奨だった機能
  • レガシーサポート

が整理されています。

「削除された」というより、
言語として健全になった印象です。

移行前に一度コードベースをスキャンしておくと、
スムーズにアップグレードできると思います。

どなたかの参考になれば嬉しいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?