第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の使い手が白熱した議論を行った |
|
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|