違いを解説君

あるゆる物事の"違い"をわかりやすく解説する情報マガジン

コマンド

ITの違い

PHP5とPHP7の違いをわかりやすく解説!バージョンアップのタイミングはいつ?

あなたは、PHPを使ったことはありますか?

 

はなこ
今度、会社でPHPを使うことになったんだけど、『PHP5』と『PHP7』のどちらを使えばいいか意見が分かれたの。
『PHP7』のほうがバージョンは上だから、そっちを使ったほうがいいんじゃないかな?
たろう
はなこ
でも、会社のメンバーは『PHP5』の方に慣れているみたいなの。
そうなると、『PHP5』と『PHP7』でどれくらい違いがあるのかで変わるかな。
たろう
はなこ
『PHP5』と『PHP7』の違いについて調べてみたいわね。

 

今回は、『PHP5』と『PHP7』の違いを解説し、バージョンアップのタイミングはいつが良いのかチェックしてみましょう。

スポンサーリンク

『PHP5』と『PHP7』の違い

『PHP』については、細かい説明は不要ですね。

『PHP』は、動的なウェブページを作成する機能を多く持ったスクリプト言語です。

関連記事
スクリプト
【拡張子】PHPとHTMLの違いを初心者向けにわかりやすく解説!

Internet explorerやFirefox、Chromeなどのブラウザを使っている時、アドレスバーに表示される拡張子が『PHP』だったことはありませんか? 通常、拡張子は『HTML』が多いです ...

続きを見る

 

『PHP5』が登場したのは2004年になります。

その後、マイナーバージョンアップされて、2014年のバージョン5.6が最後となりました。

『PHP7』は2015年に公開されました。

現在の最新バージョンは7.4です。

 

『PHP5』と『PHP7』の主な違いは次のようになります。

『PHP5』と『PHP7』の違い

  • 『PHP7』は『PHP5』に比べて実行速度が速く、メモリの使用量が少なくなった。
  • 『PHP5』で非推奨となっていた古い関数群が、『PHP7』では完全に廃止された。
  • 『PHP7』から追加された新しい機能がある。

 

パフォーマンスの改善

『PHP7』は、『PHP5』と多くの部分で互換性があり、『PHP5』時代のスクリプトは、ほとんど変更することなく『PHP7』でも動作します。

『PHP7』では、新しい機能よりも、パフォーマンスの改善といった内部の変更のほうが多いです。

同じスクリプトでも、

『PHP7』のほうが『PHP5』よりも高速

で処理できますし、メモリの使用率も低く抑えられます。

 

古い関数群の廃止

『PHP5』の頃から、非推奨の関数というものはありました。

その中から、

次の関数は『PHP7』で利用できなくなりました。

  • ereg・・・正規表現によるマッチング処理
  • eregi・・・正規表現によるマッチング処理(大文字・小文字を区別しない)
  • ereg_replace・・・正規表現による置換処理
  • eregi_replace・・・正規表現による置換処理(大文字・小文字を区別しない)
  • set_magic_quotes_runtime・・・ magic_quotes_runtime(メタ文字)の利用の有無を設定する
  • split・・・文字列を指定した正規表現で分割する
  • spliti・・・文字列を指定した正規表現で分割する(大文字・小文字を区別しない)
  • sql_regcase・・・ 大文字小文字を区別しないマッチングのための正規表現を作成する

これらの関数を利用しているスクリプトは、『PHP7』では動作しないことになります。

 

もちろん、代わりの関数は用意されているので、それらに切り替えれば『PHP7』でも動作するようになります。

『PHP7』の代替関数

PHP5 PHP7
ereg preg_match
eregi preg_match
ereg_replace preg_replace
eregi_replace preg_replace
set_magic_quotes_runtime なし
split preg_split
spliti preg_split
sql_regcase なし

eregeregiereg_replaceeregi_replacesplitsplitiは、それぞれpreg_matchpreg_replacepreg_splitとして統合されています。

正規表現は

/(パターン)/

で表現されますが、末尾に i を付加して

/(パターン)/i

と書けば、大文字と小文字は区別しなくなります。

set_magic_quotes_runtimeは、メタ文字(改行の '\n' やタブの '\t' など)をメタ文字として扱わず、そのまま出力するときに使います。

しかし、例えば '\n' をそのまま表示したければ '\\n' と書けばいいので、あまり意味がないということで完全に廃止されました。

sql_regcaseも代わりの関数はありません。

preg_matchをそのまま使うことになりますね。

 

新しい機能

『PHP7』の新しい機能にはつぎのようなものがあります。

『PHP7』の新しい機能(一部)

  • 型宣言の厳密化
  • 関数の戻り値の型宣言
  • Null合体演算子
  • 宇宙船演算子
  • 配列の定数の定義(define関数)

PHPの型は、JavaScriptなどと同じように自動的に決まる仕様でしたが、

C言語やC++のように型を宣言することができるようになりました。

また、関数の戻り値に対しても型を宣言することができます。

Null合体演算子とは、

変数1 ?? 変数2

と記述することで、変数1がNullなら変数2を、そうでないなら変数1を返す演算子です。

三項演算子で

( isset( 変数1 ) ) ? 変数1 : 変数2

と書くのと同等ですね。

 

『宇宙船演算子』という変わった名前の演算子は、

変数1 <=> 変数2

と記述することで、変数1 > 変数2なら1、変数1 == 変数2なら0、変数1 < 変数2なら-1を返します。

 

配列の定数の定義は、

define( 'PET', [
_'dog',
_'cat',
_'bird'
]);

と記述することができます。

 

『PHP5』から『PHP7』へのバージョンアップのタイミングは?

スクリプト

スクリプト

『PHP5』から『PHP7』へのバージョンアップのタイミングはいつにすればいいでしょうか?

『PHP5』と『PHP7』は基本的に互換性があり、

『PHP5』で動作するスクリプトは『PHP7』でも基本的には動作します。

 

気をつけなければならないのは、廃止された関数の対応ですが、『PHP5』時代に非推奨だった関数を使っていなければ心配はありません。

もし、使っていたとしても、ほとんどの場合はすぐに対応することはできるでしょう。

よほど多くのスクリプトを抱えていて、しかも非推奨の関数を多く使っているということがない限りは、すぐにバージョンアップしても問題はないでしょう。

もちろん、テスト環境で動作チェックは行ったほうがいいですね。

『PHP7』のほうが『PHP5』よりもパフォーマンスはいいので、できれば『PHP7』への移行を行うことをおすすめします。

 

はなこ
はじめから『PHP7』で進めたほうがよさそうね。
そうだね。

『PHP5』と文法も同じだから、たぶんすぐに使いこなせるようになるよ。

たろう

スポンサーリンク

まとめ

今回の違いのポイントについて、まとめていきましょう。

ポイント

  • 『PHP7』は『PHP5』に比べて実行速度が速くメモリの使用量が少なくなった。
  • 『PHP5』で、非推奨となっていた古い関数群が、『PHP7』では完全に廃止された。
  • 『PHP7』から追加された新しい機能がある。
  • 『PHP5』で動作していたスクリプトは、ほんの少しの変更(たいていは変更不要)で『PHP7』でも動作する。

まだ『PHP5』を使っているのであれば、『PHP7』への移行をおすすめします。

きっと、パフォーマンスが向上しますよ。

関連記事

-ITの違い

Copyright© 違いを解説君 , 2020 All Rights Reserved.