PHP 5からPHP 7への移行、主な変更点

更新:

PHP 5 から PHP 7 へ移行する際の注意点、主な変更点について説明する。

PHP 7

PHP 7 は PHP 5 と比べて処理が速くなった。 それだけではサイトによっては移行するメリットはないが、PHP 5 がサポートされなくなる日がくることを考えると、何れ PHP 7 に移行しなければいけなくなる。

移行するにあたり心配なのが、PHP 5 系用に書いたコードが PHP 7 で動くかどうかだ。 php.net には PHP 5.6.x から PHP 7.0.x への移行 というページがあり、追加された関数や変更された関数などが載っている。 削除された主なモジュールとして以下のものがある。

  • ereg
  • mssql
  • mysql
  • sybase_ct

以下、非推奨になったものも含めて紹介するが、非推奨のものは今後削除される可能性があるため使用しない方が良いだろう。

ereg の廃止

ereg 関係は削除されていて、以下の関数は廃止になった。

  • ereg()
  • eregi()
  • ereg_replace()
  • eregi_replace()
  • split()
  • spliti()

PHP 7 の変更点として一番影響があると思われる。 php.net では代わりに preg 系の使用を勧めている。 ereg といっても mb_ereg()、mb_eregi() などマルチバイト関係の関数は PHP 7 でも使える。

preg_replace() の /e 修飾子

正規表現にてPHPコードとして評価して実行できる /e 修飾子が廃止になった。 php.net では代わりに preg_replace_callback() の使用を勧めている。

foreach の内部配列ポインタ

foreach が内部の配列ポインタを使わなくなった。 私は使っていないが、使っている人は注意。

define() で配列が使えるようになった

定数を定義する define() で配列(array)が使えるようになった。 何度か配列を定義したいと思ったことがあったので嬉しい。

PHP 7.1

mb_ereg_replace() と mb_eregi_replace() で e 修飾子が非推奨になった。

PHP 7.2

each() 関数が非推奨になった。

read_exif_data() 関数が非推奨になった。 代わりに exif_read_data() 関数を推奨。


このエントリーをはてなブックマークに追加