そろそろPHP5への移行に関して一言いっとくか
2007年05月21日 プログラミングTIPS
初期のPHP5にはいくつものバグがあり、安定度も低かったため、PHP4からの移行がなかなか進みませんでした。
自分も最初はPHP5に対してあまり良い印象は受けていませんでしたが、約1年前に安定度・処理速度が改善されたPHP5.1系をインストールしてみて印象はガラッと変わりました。(PHP5.1については、【PHPウォッチ】第22回 PHP 5.1ついにリリース,大幅な高速化を実現し重大なセキュリティ問題も修正:ITpro参照)
今では、もうPHP4には戻りたくないくらいです。
PHPについて、「バージョンが変われば別言語」(404 Blog Not Found:そろそろPHPに関して一言いっとくかより)と言っている人もいましたので、PHP4からPHP5移行へのメリットを書いておきます。
- 「PHP4とPHP5では全く互換性がない」
- 「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 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など)
- 新しい関数、新しい関数2の追加
実際にPHP5に触れてみて、PHP5が便利だなと思うところは、
- 他人が書いたPHP5用のソースコードが読みやすくなった
- SimpleXML関数により、XML処理が簡単になった
- PDO 関数でデータベース処理が扱いやすくなった
- DBサーバを必要としないSQLiteを標準搭載している
- SimpleXML関数により、XML処理が簡単になった
PHP4の頃はSAXで地道にXML処理をしていましたが、かなり複雑で面倒でした。それが、PHP5になってSimpleXML関数が追加されたことにより、とても簡単にXMLが扱えるようになりました。おかげで、「公開APIを利用したサンプルサイトを作っていくよ」でいろいろなサンプルを作ることができています。SimpleXML関数を利用したWebサービスAPIの利用方法は、「10分で理解する初めてのAPI」で解説しています。PDO 関数の追加で、DBの種類にとらわれない開発も可能になりました。(処理速度については、PDO、PEAR::DB、MySQL関数の速度比較参照)
それから、「PHPは処理速度が遅い」と言っている人をたまにみかけますが、そんなことはありません。PHPを高速に動作させる方法もいろいろありますので、心配は無用です。(詳しくは、下記リンクを参照してください。)