ZAPAnet総合情報局 > [Z]ZAPAブロ〜グ2.0 > プログラミングTIPS > そろそろPHP5への移行に関して一言いっとくか

そろそろPHP5への移行に関して一言いっとくか

このエントリーをはてなブックマークに追加
2007年05月21日 カテゴリ:プログラミングTIPS
初期のPHP5にはいくつものバグがあり、安定度も低かったため、PHP4からの移行がなかなか進みませんでした。
「PHP4とPHP5では全く互換性がない」
「PHP5はバグだらけだ」
「PHP5は動作速度が遅い」
そんな風に思われてしまいました。

自分も最初はPHP5に対してあまり良い印象は受けていませんでしたが、約1年前に安定度・処理速度が改善されたPHP5.1系をインストールしてみて印象はガラッと変わりました。(PHP5.1については、【PHPウォッチ】第22回 PHP 5.1ついにリリース,大幅な高速化を実現し重大なセキュリティ問題も修正:ITpro参照)
今では、もうPHP4には戻りたくないくらいです。

PHPについて、「バージョンが変われば別言語」(404 Blog Not Found:そろそろPHPに関して一言いっとくかより)と言っている人もいましたので、PHP4からPHP5移行へのメリットを書いておきます。

PHP4からPHP5移行へのデメリット

PHP5移行へのメリットを語る前に、まずはデメリットの方から紹介しておきます。
PHP マニュアル
にいろいろと詳しく書かれている中で、以下のページは必読項目です。
PHP 4 から PHP 5 への移行
よくある質問:PHP 4 から PHP 5 への移行
クラスとオブジェクト (PHP 4)
クラスとオブジェクト (PHP 5)
PHP 4 から PHP 5 への移行へのポイントとして、下位互換性のない変更点が挙げられます。当然、互換性が無ければ移行しようという気持ちもおきないかと思います。

それで、実際にPHP5へ移行してみてわかったことですが
実は互換性はそれほど低くない
ことに気付きました。
後述するクラスとオブジェクト周りは、残念ながら互換性の低いものとなってしまっていますが、それ以外の動作はそれほど悪くありません。自分が体験した部分では、strrpos()strripos() の非互換性などがありましたが、修正は簡単です。他の下位互換性のない変更点も、それほど修正コストはかかりません。

問題は、クラスとオブジェクト (PHP 4)クラスとオブジェクト (PHP 5)です。PHP4でのオブジェクト指向開発の難しさは周りでも言われているとおりで、PHP5になってようやくオブジェクト指向開発もやりやすくなりました(それでも、他の本格的なオブジェクト指向言語には大きく劣ります)。PHP5のオブジェクト指向機能については、@IT:オブジェクト指向言語に生まれ変わるPHP5[前編](2/2)[後編](1/2)にいろいろ書かれていますので、クラスとオブジェクト (PHP 4)クラスとオブジェクト (PHP 5)と合わせて読むと変更点がよくわかります。PHP5でのオブジェクトモデルの変更は、PHP4での中途半端なオブジェクトモデルが原因になったものです。したがって、これから新しく開発を始める時には、改良されたPHP5の方が断然開発しやすいと言えます。

つまり、PHP4でしか動かない大規模なWebアプリケーションをすでに動かしている人以外は、PHP5への移行はそれほど大変ではありません。(レンタルサーバーの問題でPHP4しか利用できない場合もありますが)

では、次にPHP5に移行するメリットについて紹介します。

PHP4からPHP5移行へのメリット

PHP5ではPHP4に比べて、以下の点で大幅に改良され使いやすくなっています。
クラスとオブジェクト (PHP 5)の大幅改良
新しい関数新しい関数2の追加
新しいエラーメッセージ、メソッド、拡張モジュールなどの追加
データベースの強化(PDO、SQLiteなど)
新しいオブジェクトモデルにより、オブジェクト指向開発もしやすくなった他、新しい関数の追加やデータベース処理機能なども便利になっているところがポイントです。

実際にPHP5に触れてみて、PHP5が便利だなと思うところは、
他人が書いたPHP5用のソースコードが読みやすくなった
SimpleXML関数により、XML処理が簡単になった
PDO 関数でデータベース処理が扱いやすくなった
DBサーバを必要としないSQLiteを標準搭載している
ところです。

PHP4の頃はSAXで地道にXML処理をしていましたが、かなり複雑で面倒でした。それが、PHP5になってSimpleXML関数が追加されたことにより、とても簡単にXMLが扱えるようになりました。おかげで、「公開APIを利用したサンプルサイトを作っていくよ」でいろいろなサンプルを作ることができています。SimpleXML関数を利用したWebサービスAPIの利用方法は、「10分で理解する初めてのAPI」で解説しています。PDO 関数の追加で、DBの種類にとらわれない開発も可能になりました。(処理速度については、PDO、PEAR::DB、MySQL関数の速度比較参照)

それから、「PHPは処理速度が遅い」と言っている人をたまにみかけますが、そんなことはありません。PHPを高速に動作させる方法もいろいろありますので、心配は無用です。(詳しくは、下記リンクを参照してください。)
PHP5.2.1リリース
Zend Optimizerインストールメモ
XCacheのインストールとphp用アクセラレータ比較
PHP5.2.0とeAcceleratorのインストールメモ

まとめ

PHP5では、種々の改良が行われPHP4よりも扱いやすいプログラム言語になりました。すでにPHP4でのみ動くWebアプリケーションをたくさん動かしている人以外は、すぐにでもPHP5へ移行した方がメリットの方が多いと言えます。これからPHPを始めようとしている人であれば、当然PHP5の方がおすすめです。PHP6のリリースはまだまだ時期が決定していないため、今のうちにPHP5を学んでおくと良いと思います。

PHP関連記事

PHP系 実際に買って読んだPHPの参考書レビュー
PHPで動いている高度なオープンソースWebアプリレビュー
PHP5.2.0とeAcceleratorのインストールメモ
XCacheのインストールとphp用アクセラレータ比較
Zend Optimizerインストールメモ
ケータイ電話に対応させました&mobile向けTIPS
Nucleusを半分やめて、100倍速を実現しました!
PDO、PEAR::DB、MySQL関数の速度比較
そろそろPHP5への移行に関して一言いっとくか
「PHPを使っている人=低脳」ではない
PHP5のtempnam関数について
RPC.phpのバグ
PEARのアップグレードメモ
PHP Accelerator インストールメモ
phpBBカスタマイズメモ
phpMyAdmin設置メモ
PHPBB設置メモ

関連リンク

[ThinkIT] Part6:PHP4からPHP5への移行のポイント (1/2)
@IT:オブジェクト指向言語に生まれ変わるPHP5[前編](1/2)
@IT:オブジェクト指向言語に生まれ変わるPHP5[後編](1/2)
So-net blog:ある nakagami の日記:PHP4 と PHP5 の違い
PHP4なスクリプトをPHP5へ移行する際に発生する7つの問題 | Shin x blog