各種フレームワークでの対応状況
これまでの変更点を見ると、PHP 7では通常の開発をしていては遭遇しないようなレアなケースでの違いがあることが分かります。したがって、あまりそれらの違いについて気にする必要がない場合が多いとは思いますが、PHPで開発している方にとってはPHP自体のバージョンよりも、使っているフレームワークでのPHPの対応状況のほうが影響が大きい場合も多いことと思います。
実際、多くのフレームワークではPHP 5.xで動いているコードのままでPHP 7に移行できるわけではなく、何らかの対応を行った、もしくは今後行う予定があるようです。
そこで、代表的なフレームワークでのPHP 7に対する取り組みを表2のようにまとめてみました。
フレームワーク名 | 対応状況 |
---|---|
CakePHP | 2.7以上、もしくは3.0以上で対応。 |
ZendFramework | ZendFramework 3で対応予定。 |
FuelPHP | 1.7.4以降と思われる。開発リポジトリでは対応が完了しているようだが、1.7.3の時点では未対応 |
Symfony | 2015/10/11時点で開発リポジトリ上では対応が完了。これ以降に、2.3,2.7,2.8,3.0のブランチへとマージされてリリースされる。 |
Phalcon | PHP 7への対応はまだ未定 |
おおよそのフレームワークで既に対応済みか、もしくはPHP 7のリリースに合わせて新しいバージョンにおいてPHP 7の対応はできているようです。ここで紹介していないフレームワークもありますが、おおよそ同じような感じになるのではないかと思います。ここでPhalconを紹介したのはPHP 7において特徴的な影響をうけたフレームワークなので紹介しました。このフレームワークは、個人的には筆者がもっとも好きなフレームワークではありますが、PHPで記述されておらずZephirという特有の言語を用いてPHPのネイティブエクステンションとして提供されているため、非常に大きな影響を受けてしまっています。このため、PHP 7への対応が他のフレームワークに比べて簡単でなく他のフレームワークに比べて時間がかかるものと思われます。
各種拡張モジュールの対応状況
フレームワークのところでも少々触れましたが、PHP 7においてもっとも対応が面倒なのがこの拡張モジュールの部分と言えます。したがって、この対応はPHPで書かれたコードほどスムーズに進んではいないと言えます。そのためか、以下の一部の拡張モジュールは削除されました。
- ereg
- mssql
- mysql
- sybase_ct
特にこの中でPDOを使っていないようなケースでは、mysqlが削除された影響は大きいと思われますが、mysqliもしくはpdo_mysqlを使った記述に変更する必要があります。ただし、mysqlモジュールはすでにPHP 5.5で推奨されない機能として扱われていたので注意はしていた方もいるとは思いますが、PHP 7にて完全になくなってしまいました。また、PECLでの拡張モジュールの場合にはPHP 5.0 or newerと記述されていても、PHP 7には対応していない場合が多いので特に注意が必要です。
しかしながら、当然ですがPHP 7のソースと共に配布されるエクステンションは対応ができていますので、個別に拡張モジュールを導入している場合を除いてそれほど心配する必要はありません。
最後に
前回と今回でPHP 7について紹介しましたが、PHP 7は速度の面でも、言語仕様の面でもより大規模な利用に向けた改善が行われています。PHP 3の時から使っている筆者には、昔のお手軽な言語のイメージが懐かしくも惜しい気持ちもありますが、非常に心強くもあります。まだ、大量の同時接続とリアルタイムWebなどの用途では足りない部分もありますが、通常のWebソリューションであればPHPは速度面、開発の容易性などを総合的に考慮すると、今後のWeb開発の中心の一つにあることは間違いなく、PHP 7のリリースによってますますPHPの注目度は高まっていくことでしょう。