PHP5用アプリをPHP4対応に書き直すためのメモ

php5のアプリケーションをphp4用にダウングレードするときメモ
php4とphp5は基本的には別言語であると考える。
php5用のフレームワークを使用しているアプリケーションをphp4で動かさなくていけなくなったと納品間際に知ったときに、泣きながらおこなわなければならない作業。

作業一

関数の修飾詞は無駄にしかならないから全てとっぱらってしまいましょう。

public function -> function
protected function -> function
private function -> function
abstract function -> function
static function -> function

class foo{
  private $hoge;
}

class foo{
  var $hoge;
}

クラス変数の頭とかにprivateとかがついてたら、全部取っ払ってvarをつける
インターフェイスとかファイナルとかも注意

作業二

constructを全て取っ払って
クラス名に書き換える

class hoge{
public __construct(){

}
}

これを以下のようにすればコンストラクトになりまする

class hoge{
hoge(){

}
}

作業三

引数をチェックする。
オブジェクトインスタンスを渡しているものは参照渡しにするために「&」をつける。

public function set_db($o){
   $this->dbh_ = $o;
}

これをこんな風に書き直す

function set_db( & $o){
   $this->dbh_ = $o;
}

作業四

$hoge->foo()->foo2();

だとエラーになるから

$wk = $hoge->foo();
$wk->foo2();

のように全て変更

作業五

とりあえずアプリケーションを動かす。
あとはひたすらデバッグ
そして場当たり的に直していって、どんどん汚いコードを量産してきましょう。


しかし今だにPHP4を使っているサーバがあったなんて・・・・・
しかもバージョンは深刻なバグが報告されていてまだ直ってない 4.3.10
なんていうかもう・・・・・ orz