第1回 例外処理の実装を把握する

亀本 大地
アシアル株式会社

2008/5/7

PHP4のサポートが終了し、これまでPHP4が中心だった開発現場でも、いよいよPHP5への移行を視野に入れる時期が来た。PHP5ならではの機能を生かした開発を進めるためのポイントを紹介する(編集部)

PHP5を利用したこれからの開発に備える

 PHP4のアップデートが2007年12月31日で終了し、セキュリティフィックスについても2008年の8月8日をもって打ち切られる予定だ。これによって、いままでPHP4を中心に開発を行っていた現場でも、PHP5による開発体制への移行が進んでいくことが予想される。

 PHP4で構築した現行のシステムをPHP5に移行するかどうかは判断に迷うところだが、これから新規に開発していくシステムは、よほどの理由がない限りPHP5での開発が中心になっていくだろう。

 もちろん、開発基盤がPHP5に移行したからといって、開発手法がさほど大きく変わることはない。とはいえ、せっかく新しい環境での開発を行うのであれば、新しく追加された便利な機能を活用していきたいところだ。

 本連載では、新たにPHP5環境を利用し始める方々を主な対象として、新規に追加されたモジュールや、整理されて使いやすくなった関数群の機能と実装について紹介していく。

 特に、これまであまり多くのドキュメントが存在せず、有益にもかかわらずさまざまな事情で脚光を浴びにくかった部分にも積極的に言及していきたい。そのため、新たにPHP5に移行する人だけではなく、以前からPHP5を利用している人にとっても、有用な機能の再発見や復習に役立つものになるのではないかと思う。

関連記事:
リンク ベータリリース目前!? PHP5の新機能
http://www.atmarkit.co.jp/fcoding/articles/php5/01/php501a.html
リンク PHP5の新機能とPHP4との互換性
http://www.atmarkit.co.jp/fcoding/articles/php5/02/php502a.html

その前に……あなたはPHP5へ移行すべきか否か?

 PHP4サポート終了のニュースを耳にして、運用中のシステムをPHP5へ移行することを検討した方も多いことだろう。本連載ではPHP5の新機能を中心に扱うが、PHP4とPHP5の変更点についてもここで簡単に触れておくので、システムをPHP4からPHP5へ移行する際の参考にしていただきたい。

 移行をすると既存のシステムが動かなくなってしまうのではないか……と心配になるかもしれないが、注意すべき点はあるにせよ、PHP4とPHP5の最新版の間での差異はそれほど神経質になるほどのものではない。

 PHP4からPHP5へのバージョンアップの変更点としては

  • オブジェクト変数のコピー/リファレンス周りの挙動変更
  • アクセス修飾子やInterfaceの実装などの、より充実したオブジェクト指向プログラミングのサポート
  • DOM/XML関連モジュールの大幅な機能追加/モジュール名変更

などが挙げられる。特に大きいのは、上の2点にかかわる「Zend_Engine」(PHP本体のエンジン)のバージョンアップだろう。

 PHP5からは、PHP4で使用していたZend_Engineの代わりに「Zend_Engine 2」と呼ばれる新しい実行エンジンが採用されている。本体エンジン自体がリプレースされたことによって、実行速度も改善されている。

 この変更はPHP5の大きな魅力の1つとなっているが、同時に、システム移行の際に注意すべき点でもある。特に、オブジェクトのコピーに関する挙動が変わったことで、オブジェクトが複製されるべきところが複製されずに実行されてしまう場合などが想定されるため、トリッキーなオブジェクトの使い方をしている場合には問題が生じやすい。

 ただ、このような問題が生じてしまう場合に備えて、Zend_Engineが旧バージョンと同様に動作する「zend.ze1_compatibility_mode」という設定も用意されている。実際のところ、問題が生じた場合にはこの設定によって回避できることも多い。

 また、PHP4とPHP5の開発は並行して行われていたため、PHP5で修正された問題はPHP4にもバックポートされるなど、最新版の間には大きな差異が生まれないように開発が進められてきた経緯もあり、関数の挙動が変化しているパターンはかなり限定される。そのような変化に関しては、本家マニュアルにも情報が多くまとまっているので、修正する際に必要な情報が見つからずにハマることはまれだろう。

 上述のような状況があるため、小規模なシステムの場合は、少し手を加える程度、場合によっては一切手を加えなくても対応できる場合も多いはずだ。

 ただし、これはPHP4系列での運用が適切に行われてきた場合にのみいえることだ。PHP4.1などの非常に古いバージョンで、更新を停止したまま運用を続けているような場合には、マイナーバージョン間の差異を吸収するための対応が必要になってくるため、移行するとなると厄介な問題に当たるかもしれない。

 また、多人数での開発を余儀なくされる中規模以上のシステムの場合には、適切にメンテナンスされていて問題が出る可能性が少ないと分かっていても、移行に踏み切るのにはなかなか勇気が要る。システムの規模が大きくなればなるほど、潜在的な問題を抱えるリスクは高くなり、かつミッションクリティカルなシステムである割合も増えることだろう(無論、これは統計を採ったわけでも何でもなく、筆者の予想にすぎないが)。

 現実問題としては、PHP4からPHP5へ移行するかしないかは、こういったさまざまな状況を踏まえて判断する必要がある。一概に、「サポートが終わるからいますぐ移行しないといけない」というものでもない。現在、次期バージョンであるPHP5.3系の開発が行われており、かなり大規模な機能追加が予定されているという背景もある。

 そのため、サポート打ち切り後1年程度でリプレースの計画が立てられるようであれば、しばらくの間PHP4の保守サービスなどを利用し、PHP5.3が出るのを待つ、というのも1つの方策であるといえる。

 逆に、当分リプレースの予定がないのであれば、思い切って早い段階でPHP5に乗せ換えてしまう方がよいように思う。既存のシステムを乗せ替えるだけであれば、PHP5.3の新機能を待つ必要性はないし、むしろ、すでにある程度枯れているPHP5.2系でのメンテナンスをしてしまう方が良策かもしれない。

 では、以降、PHP5での新しい機能について順番に紹介していこう。

 
1/2

Index
例外処理の実装を把握する
Page1
PHP5を利用したこれからの開発に備える
その前に……あなたはPHP5へ移行すべきか否か?
  Page2
新しい例外処理
 基本的な使い方と継承によるcatch句の用法
 例外の再throwとset_exception_handler

PHP5で広がる! 開発環境

 PHP関連記事
例外処理の実装を把握する
PHP5で広がる! 開発環境(1)
 PHP4のサポートが終了し、いよいよPHP5への移行を視野に入れる時期が来た。PHP5の機能を生かした開発のポイントを紹介
クライアントPCに言語環境を入れる理由
Mac OS X+PHPでオールインワン環境(準備編)
 Webアプリ開発者に人気のMac OS X。効率的な開発のために複数バージョンのPHPを実行する環境を構築してみよう
PHPに押し寄せるリスクと国際化の波
PHPカンファレンス2008レポート(前編)
 PHP4のサポートが完全に終了する。多くの新機能が投入されるPHP5.3へ移行か、国際化対応で開発が遅れるPHP6を待つか
PHPによる大規模商用サービスの裏側
PHPカンファレンス2008レポート(中編)
 企業のWebアプリケーション開発現場で利用されるPHP。開発現場の裏側にはさまざまなドラマが隠されている
PHPユーザーは本当にほかの言語を知らないのか?
PHPカンファレンス2008レポート(後編)
 PHPは本当にダメな言語なのだろうか。Perl、Ruby、Python、Java、JavaScriptの使い手が白熱した議論を行った
  Coding Edgeフォーラムフィード  2.01.00.91


Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

>

Coding Edge 記事ランキング

本日 月間