Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

PHP 5からPHP 7へ移行する際に気を付けるべきポイント

PHP 7がやってきた!! 第2回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2016/02/05 14:00

 PHPの新しいバージョンであるPHP 7が2015年12月に正式リリースされました。そこで、前回に続いてPHP 7で何が変わったのかを紹介します。前回は主に新しくPHP 7を使い始める方向けに新機能を紹介しましたが、今回は、これまでPHP 5を使っていた方が気を付けるべき、もしくは知るべき違いを中心に紹介します。

目次

対象読者

  • PHPについて基本的な概念を理解している方
  • WEBアプリケーションを開発している方
  • PHP 5からPHP 7への移行に興味がある方

必要な環境

 この記事では、PHP 7(RC7)を使ってLinux(Ubuntu14.04)とMac(10.11)で確認を行っています。インストール手順などは各環境によって違いがある部分もありますが、今回紹介する仕様に関しては環境による違いはありません。

既存のプロジェクトへの影響

 前回、PHP 7ではPHP 5からバージョンアップであれば既存コードに関してはあまり変更がなくバージョンアップが可能であると伝えましたが、実際にPHP 5以前からのコードも含まれていたりすることもあり、既存のコードを利用しPHP 7へバージョンアップする場合には大きく分けて以下のようなことに注意する必要があります。

  • PHP 5の時点において非推奨の利用方法や関数などを使っている場合
  • PHPの基本構造に近い部分での実装がある場合。主にフレームワークを自作などをしている場合。
  • PECLなどのPHP自身のソースに含まれていないサードパーティ製の拡張モジュールを使っている場合

 これらのいずれかに該当する場合には、十分な注意が必要です。

PHP 7で推奨されなくなる機能

 まだ、その利用自体ができなくなるわけではありませんが、今後利用できなくなる可能性もあるものです。この変更はPHP4から使われているコードがある場合や、現時点でも推奨されないような使い方をしている場合には注意が必要です。

クラス名と同じコンストラクタを利用している場合

 PPH4ではクラス名と同じコンストラクタを宣言する形式でしたが、PHP 5では__construct()メソッドに統一されました。したがって、リスト1のようなコードはPHP 7では推奨されなくなり、PHP 7ではE_DEPRECATEDでのワーニングが表示されます。すぐに使えなくなるわけではありませんが、PHP4からの資産はこの機会に対応を行った方が良いでしょう。

リスト1 クラス名と同名のコンストラクタの例(deprecated/constructor.php)
class Foo{
    function Foo(){       // クラス名と同名のコンストラクタ
        echo "Create Foo\n";
    }
}
$foo = new Foo();

staticメソッドでないメソッドのstatic呼び出し

 PHP 5ではstatic宣言させていなくても、staticメソッドとして呼び出すことができましたがPHP 7では推奨されなくなりました。リスト2がその一例です。

リスト2 staticメソッドとしての例(deprecated/static.php)
class Foo{
    public function println()
    {
        echo "static println\n";
    }
}
$foo = new Foo();
$foo->println();       //(1)インスタンスメソッドとして実行
Foo::println();        //(2)Staticメソッドとして実行

 リスト2の(1)は問題ないメソッドの実行ですが、(2)ではstaticメソッドではないためにE_DEPRECATEDでのワーニングが表示されます。反対に、staticメソッドとして宣言したメソッドをインスタンスメソッドとして実行するにはワーニングなどが表示されないようですが、こちらも良いコードとは言えませんので、もしそのようなコードがあればこの機会に対応することをおすすめします。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2012年2月時点での登録メンバは37名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:PHP 7がやってきた!!

おすすめ記事

All contents copyright © 2006-2016 Shoeisha Co., Ltd. All rights reserved. ver.1.5