TOP書籍連動> はじめに
まるごと PHP!
まるごと PHP!

Part6:PHP4からPHP5への移行のポイント

著者:月宮紀柳(TSUKIMIYA, Kiryu)   2005/4/13
1   2  次のページ
はじめに

   PHP4からPHP5ではいくつかの変更点があり、互換性のないものもあります。ここでは、そのような変更にどのように対処すべきかを説明します。

   PHP5も無事にリリースされ、PHP5への移行を考えている方も増えていることでしょう。そこで問題なのが、現在PHP4上で動作しているアプリケーションの存在ではないでしょうか。ここではPHP5への移行にあたってつまずきやすいポイントを紹介します。


<移行の必要性

   そもそもPHP4からPHP5に移行する必要性とは何でしょうか。たとえば業務システムの場合、一度作ってしまったらよほどのことがない限り環境を変えるということはまずありえません。特にPHP5へのバージョンアップの場合は、現状PHP4とPHP5の同居が通常の方法では無理なことを考えると、PHP5リリース後も当分の間PHP4のメンテナンスは続くと予想できるので、セキュリティホールが見つかったためPHP5にバージョンアップせざるを得なくなる、という状況は当分こないでしょう(注1)。

注1:しかしそこはPHPなので、唐突にPHP4のサポートが終わってしまい、PHP5に上げざるを得なくなるという状況も考えられますが。

   その上で、PHP4からPHP5へスクリプトを移行しなければならない状況を考えると「レンタルサーバを借りたらPHP5だった」であるとか、「何となく自分のサーバに入っているPHPを5にしてみた」といった場合に「既存のアプリケーションが動かなくなってしまった」という場面が考えられます(注2)。

注2:そうして筆者は毎回地雷を踏んでいます。

   PHP4とPHP5は基本的に別物と考えたほうが安全ですが、PHP4用のアプリケーションをとりあえずPHP5上で動かすだけなら、比較的簡単に動作させることができる場合があります。

Fatal error: Cannot re-assign $this

   PHP4からPHP5への移行作業では、おそらく、かなり多くの人がこのエラーを目にしているのではないでしょうか。クラス関連の実装が変わり、構文チェックが厳しくなったことで、次のように$thisをほかのオブジェクトに置き換えるようなコードはもはや許されません。

<?php
class Foo
{
}
class Bar
{
function Main()
{
$this = new Foo();
}
}
?>

   このようなコードを書いている場合は、修正に結構な手間がかかります。

1   2  次のページ


月宮紀柳
著者プロフィール
著者:月宮紀柳
PHP3の頃から習得コストの安さが気に入り、Webシステムのメイン環境として選択。現在はアーキテクトとしてPHPを使った中〜大規模案件への対応を行っている。


INDEX
Part6:PHP4からPHP5への移行のポイント
はじめに
  array_merge(): Argument #1 is not an array