SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

PHP 7がやってきた!!

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

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

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

 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メソッドとして宣言したメソッドをインスタンスメソッドとして実行するにはワーニングなどが表示されないようですが、こちらも良いコードとは言えませんので、もしそのようなコードがあればこの機会に対応することをおすすめします。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
互換性がなくなるコード

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
PHP 7がやってきた!!連載記事一覧
この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8952 2016/02/05 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング