2004年(平成16年)7月にPHP 5が登場し、その後、内部処理をUTF-16に統一するPHP 6の開発が進められていた。しかし、開発は難航し、実装が複雑になる割に機能改善が見込まれないことから、2010年(平成22年)春、PHP 5.3へロールバックすることが決まった。
そして、機能改善を主眼に置いた次期バージョンは 6 をスキップして PHP 7 の名が冠せられることになった。
ここでは、PHP 5.6から7.0へ移行するためのポイントを整理する。
そして、機能改善を主眼に置いた次期バージョンは 6 をスキップして PHP 7 の名が冠せられることになった。
ここでは、PHP 5.6から7.0へ移行するためのポイントを整理する。
⚠ 本ページは、すでにサポートを終了したソフトウェアに関して記載しています。ご利用にあたっては自己責任でお願いします。
性能改善
まず、Persistent Secondary File-based Cache の採用で、これまで共有メモリにあったキャッシュをディスクにも保存するようにしたため、PHPアプリケーションをリスタートしてもキャッシュの内容がすぐにメモリに展開され、すぐ高速に動くようになった。
内部データ構造も大幅に変更され、とくに zval構造体 の変更により高速化を実現するとともに、メモリ消費量を半分から3分の1に抑えることを可能にしている。
内部データ構造も大幅に変更され、とくに zval構造体 の変更により高速化を実現するとともに、メモリ消費量を半分から3分の1に抑えることを可能にしている。
スカラー型宣言
宇宙船演算子
新機能として、宇宙船演算子 "<=>" をサポートした。比較演算の一種で、小さい場合には -1、等しい場合には0、大きい場合には+1を返す。
14: function compare(float $x, float $y) {
15: return $x <=> $y;
16: }
上記のユーザー関数は宇宙船演算子の使用例である。引数にスカラー型宣言を行っており、引数がfloat型以外の時には例外を発生する。
下記のテキストボックスに何か入力して計算ボタンを押下すると、その挙動が分かる。
下記のテキストボックスに何か入力して計算ボタンを押下すると、その挙動が分かる。
PHPバージョン 8.3.12
結果=-1無名クラス
新機能として、無名クラスをサポートした。
一度しか使わないようなクラスを定義するときに便利だ。
一度しか使わないようなクラスを定義するときに便利だ。
Expectation
従来、 assert 関数を使った例外処理が行われてきたが、Expectation は関数の機能を保ったまま、アサート処理を構文法に格上げしたものである。
推奨されなくなる機能
非推奨機能 | 代替方法 |
---|---|
PHP 4 形式のコンストラクタ | 将来的に削除予定。 |
非 static メソッドに対する static 呼び出し | 将来的に削除予定。 |
password_hash() の salt オプション | salt オプションを使用しない。 |
capture_session_meta SSL コンテキストオプション | SSL メタデータは stream_get_meta_data() 関数を利用する。 |
LDAP | ldap_sort 関数を使用しない。 |
参考サイト
- PHP 5.6.x から PHP 7.0.x への移行:PHP公式
- PHP 7 をインストールする:ぱふぅ家のホームページ
- PHP 7 を Web サーバで利用できるようにする:ぱふぅ家のホームページ
- PHPの生みの親が語る。PHPカンファレンス2015:PublicKey
(この項おわり)
PHP 7.0のセキュリティサポート期限は2018年(平成30年)12月3日である。