Archive | 7月, 2012

PHP4からPHP5.3/5.4へバージョンアップした際の留意点 このエントリーをはてなブックマークに追加

9 7月

よく躓くポイント <関数など>

  • array_merge() の引数は、配列のみ指定可能になりました。
  • get_class(), instance_of() など、クラス名・関数名・メソッド名を取得したり比較するものに関しては、取得したクラス名などが大文字・小文字を区別するようになりました。
    • つまり、if (get_class($HogeClass) == ‘hoge’)) ではなく、if (strtolower(get_class($HogeClass)) == ‘hoge’) にします。
  • usort(), uasort(), uksort(), array_flip(), array_unique() は、引数にオブジェクトを受け入れなくなりました。
  • array_combine() は、空の配列を2つ指定したとき、返り値がFALSEからarray()になりました。
  • split() は、PHP5.3で非推奨となりました。代わりにexplode() を使います。
  • strrpos(), strripos() は、第二引数の文字列全体を使用して検索を行うようになりました。
    • つまり、strrpos($hogeString, ‘hoge’) は、PHP4とPHP5で違う動きをすることがあります。

よく躓くポイント <クラス・オブジェクト>

  • クラスは使用前に宣言する必要があります。
  • オブジェクト内で $this は特別な意味を持つため、$thisに代入できなくなりました。
    • つまり、クラス内で$this = new HogeClass(); といった代入ができなくなりました。
  • PHP4ではオブジェクトの代入は値渡しでしたが、PHP5では参照渡しになりました。
  • PHP4では、プロパティを持たないオブジェクトはfalseと評価されていましたが、PHP5ではオブジェクトは常にtrueと評価されます。
  • オブジェクトを一致演算子(===)で比較を行う際、PHP4では、同じ属性に同じ値を持ち、同じクラスから生成されたインスタンスが等しいと見なされます。PHP5では、オブジェクト変数が同じクラスの同じインスタンスを参照する場合のみ、等しいと見なされます。