PHP4

2pt

PHP 5 -> 4 注意点

  • キーワードがない

abstract, clone, final, interface, implementes, private, protected, public, static, try, catch, throw, const, instanceof, __construct, __destruct

  • オブジェクトはすべてclone

なのでリファレンスを使う

function &getObject(){
}
function processObject(&$obj){
}
$localObject =& $argument;
  • メソッドチェーンできない
// PHP5
$this->hoge()->moge()
// PHP4
$e = $this->hoge();
$e->moge();
  • 多くの関数が使えない

file_put_contents, simplexml,

  • オートローダーがない
  • get_classは小文字で返す。(クラス名はcase insensitive)
  • クラス変数がない。(メソッドには静的にアクセス可能)
  • magic_quotes_gpc がデフォルトでOn。しかも実行時にOffにできない
  • selfがない
  • SimpleXMLがない

PHP 4 -> 5注意点

  • クラスは使用前に宣言する必要がある
  • リファレンス

MacPortsPHP4-5 切り替えスクリプト


/bin/php-switch で保存

#!/usr/bin/env bash

/opt/local/apache2/bin/apachectl stop

case "$1" in
'php4')
/opt/local/bin/port deactivate php52
/opt/local/bin/port activate php4
cp /opt/local/apache2/conf/extras-conf/load_php4.conf /opt/local/apache2/conf/extras-conf/load_php.conf
;;
'php52')
/opt/local/bin/port deactivate php4
/opt/local/bin/port activate php52
cp /opt/local/apache2/conf/extras-conf/load_php5.conf /opt/local/apache2/conf/extras-conf/load_php.conf
;;
esac
/opt/local/apache2/bin/apachectl start


httpd.conf の LoadModule は Include に置き換え

#LoadModule php5_module        modules/libphp5.so
#LoadModule php4_module        modules/libphp4.so
Include conf/extras-conf/load_php.conf


/opt/local/apache2/conf/extras-conf/load_php4.conf

LoadModule php4_module        modules/libphp4.so


/opt/local/apache2/conf/extras-conf/load_php5.conf

LoadModule php5_module        modules/libphp5.so



コマンドで切り替え

sudo php-switch php4  # PHP4に
sudo php-switch php52 # PHP52に


5.3は52と競合してるらしくてうまくいかかった…。

参考


PHP4なスクリプトをPHP5へ移行する際に発生する7つの問題
http://www.1x1.jp/blog/2007/06/php_php4_to_php5.html

5 -> 4 コンバーター
http://php7.org/tools/5to4/

下位互換性のない変更点
http://www.php.net/manual/ja/migration5.incompatible.php

「PHP4」について友人に書いてもらう。

あなたにとって「PHP4」とは?

ログインするとワンクリックでキーワードを投稿できます

ログインする 新規登録する

お気に入りの説明

0 pt
PHP4でフレームワークを使うと遅いという噂は本当ですか?
もっと読む

他の人の「PHP4」を見る