※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

PHP4のソースをPHP5で動かした時のメモ書き
  • strtotime() で日時形式文字列からタイムスタンプ値が得られない
    • パラメタで与える文字列に括弧や日本語文字列などが含まれると変換に失敗する ※特に曜日はNG
  • mb_convert_kana() で文字化け → 元の文字コードを明記
  • mb_convert_encoding() で文字化け → 元の文字コードを明記
  • メール送信前に内部文字コードを宣言する(入力/出力)
mb_internal_encoding('EUC-JP'); // これを追加
mb_language('ja');
mb_send_mail()
  • pg_NumRows でワーニング → pg_num_rows に変更
  • "\v" が特殊記号に認識された → 表記方法を変更
    • 社内環境では発生しなかった(リビジョンによる違い?)
    • 話によると "\f" もそうなるらしい
  • i18n_jp_hantozen() が無い → mb_convert_kana() に変更
  • is_a() を instanceof で代替
  • オブジェクト関連を扱う場合は "&" を付けないように
    • オブジェクトのやり取りでも同様
    • メソッドの戻り値を受け取る場合も同様
$obj =& new class2();
↓
$obj = new class2();
  • オブジェクトを生成せずに使う関数は static で定義する
    • self::func1() みたいなやつ
    • static で定義した関数は、オブジェクト生成した場合は使えない
  • 外部から(オブジェクトを生成せずに)使う関数は public で定義する
    • class1::func2() みたいなやつ
  • コンストラクタの重複定義はNG
    • クラスと同名の関数と __construct() は同時に定義できない(ワーニング)
  • $_GET / $_POST の変更
    • PHP4 では効いてないようだが PHP5 では効いてる
    • 扱いが、値渡しから参照渡しになったってことか?
  • 配列を破壊する関数の制限
こういうのはNGっぽいので
$last = end(array_keys($this->m_aryTag["XXXXX"]));
↓
こんな感じに
$ar = array_keys($this->m_aryTag["XXXXX"]);
$last = end($ar);
  • クラス内のメンバ変数で const 定義
    • $this->xxx では参照できない
    • self::xxx で参照するといいらしい
  • 日付や時刻関係の仕様が変わったよう
    • strtotime()では曜日の漢字や括弧()が受け付けられなくなったよう
  • タイムゾーン関連で警告が出る場合は下記を
date_default_timezone_set('Asia/Tokyo');
  • その他
    • smarty のプラグイン
      • バージョンによって入ってたり入ってなかったりするものがあるので注意
    • エラーのフック処理
      • PEAR内で発生するワーニングはスルーするように修正
    • 配列を扱う関数 - array_merge(), in_array()
      • 配列を指定するパラメタに配列以外を指定したらエラーになるよう
    • {}による文字列へのアクセスはPHP6で消えるので非推奨(らしい)
    • コンストラクタ(クラス名と同じ名前の関数)に static は指定できない