ダウンロード サンプルファイル (9.2 KB)
PHPの新しいバージョンであるPHP 7がまもなく正式リリースされる予定です。そこで、2回に分けてPHP 7で新しく追加された仕様や機能、そして注意すべき点を紹介します。ただ、読者の皆様の中にはPHP 5.3からPHP 5.6でのリリースですらついて行けていないという方もいると思います。実際、PHP 5は数字こそマイナーバージョンにもかかわらず、かなり大きな言語仕様に変更があったと思いますので、これらの復習もかねてPHP 7の機能について紹介します。
対象読者
- PHPについて基本的な概念を理解している方
- WEBアプリケーションを開発している方
必要な環境
この記事では、PHP 7(RC5)を使ってLinux(Ubuntu14.04)とMac(10.11)で確認を行っています。インストール手順などは各環境によって違いがある部分もありますが、今回紹介する仕様に関しては環境による違いはありません。
PHP 7で何が変わったのか
PHP 5の次のバージョンアップがPHP 6を通り越してPHP 7になることになりました。元々、PHP 6で予定されていたような内容がPHP 5のマイナーバージョンアップによって取り込まれてしまったこともあり、次のPHPのバージョンアップがPHP 7になってしまったようです。そして、PHP 6で予定されていた大きな変更が取り込まれたのはPHP 5.3であり、そのリリースが2009年ですので、しばらく大きなリリースがされてなかったと言えると思います。
その間にもPHPは大規模なシステムでも使われつつあり速度面での改善を望まれていましたが、それらに答える形でパフォーマンスの向上を行いリリースされる事になります。Zend社のサイトのパフォーマンス比較によれば、約2倍程度のパフォーマンス向上が得られるとのレポートも上がっています。
しかし、パフォーマンス面以外の言語仕様面の細かい部分においてもこれまで通り改善は進んでいます。今回は、PHPマニュアル(新機能)を参考に、新しい機能、仕様を中心に紹介します。ただし、PHP 5.3からPHP 5.6までの変更も関係がある部分については一部、それらの説明も行っています。
引数、戻り値の型宣言
PHPという言語の良いところであり、悪いところでもある側面として、型の扱いが曖昧であることがありました。PHP 7では、型が厳格に扱えるように言語仕様が変更されました。ただし、これまで通りのように曖昧に扱うこともできますので、例えば共通となるライブラリやフレームワークなどでは、厳密な型として利用を制限しつつ、実際のWebサイトの各ページ処理ではこれまで通りにすることもできますので、必要性に応じて選択ができます。
引数の型宣言
PHP 5では引数の指定の際、クラスやインターフェースで型を指定することができ、このことはタイプヒンティングと呼ばれていました。しかしながら、基本的な型であるint型やstring型を指定することはできませんでした。PHP 7によってこれら基本的な型(表1 使用できるスカラー型一覧)がチェックできるようになりました。
| 宣言型 | 説明 |
|---|---|
| array | 配列(連想配列も含む) |
| callable | コールバック関数 |
| bool | 論理値(boolean) |
| float | 浮動小数点数(float) |
| int | 整数(integer) |
| string | 文字列(string) |
実際にint型の型チェックをするようにしたコードの例がリスト1です。
function arg_int(int $num){
return $num;
}
var_dump(arg_int(1)); //(1)int(1)と出力される
var_dump(arg_int("10")); //(2)int(10)と表示される
var_dump(arg_int("a")); //(3)エラーが表示される
(1)では、ご想像通り整数の"1"として機能します。続いて(2)のように文字列の"10"ですが、こちらは整数の"10"として処理が行われます。このように型変換をして問題がないと思われる場合には、自動的に型変換が行われて処理が行われます。そして、(3)では文字列の"a"の場合ですが、こちらはエラーになります。
ただし自動的な型変換をされては困るという場合もあるのではないでしょうか。その場合には、ファイルの先頭にリスト2のように宣言することで、自動的な型変換を用いずに型チェックを行うこともできます。
ただし、この指定は関数を呼び出す型で行う必要があるので、あくまでも利用者側の意図が優先されるということのようです。また、string型の場合には自動的な型変換を行う(弱い型)ケースが多くなりますので、あくまで参考程度にするか、自動的な型チェックを無効(強い型)にする宣言を必ず行うような注意が必要になります。
declare(strict_types=1);
この記事は参考になりましたか?
- PHP 7がやってきた!!連載記事一覧
-
- PHP 5からPHP 7へ移行する際に気を付けるべきポイント
- 新しい仕様でより進化した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本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)
< WINGSプロジェクト について> 有限会社 WINGSプロジェクト が運営する、テクニカル執筆コミュニティ(代表 ...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
