既存の PHP5 のコードのほとんどは変更なしで動作するはずですが、 以下の下位互換性のない変更点については注意しましょう。
FALSE
を返すようになりました。set_magic_quotes_runtime() を実行すると、
マジッククォートを有効にしようとして E_CORE_ERROR
が発生します。
E_WARNING
を発生させるようになりました。
E_WARNING
が発生します。オフセットに double や bool そして null
を指定した場合は E_NOTICE
が発生します。数値とみなせる文字列を渡した場合
($a['2'] など) の挙動はこれまでと変わりません。
'12.3' や '5 foobar' のようなオフセットは非数値とみなされて E_WARNING
が発生しますが、過去との互換性のためにそれぞれ 12 および 5 に変換されることに注意しましょう。
次のようなコードの返す値が変わります。
$str='abc';var_dump(isset($str['x'])); // PHP 5.4 以降では false、5.3 以前のバージョンでは true
E_NOTICE
が発生するようになりました。
キャストの結果は "Array" で、以前と変わりません。
NULL
、FALSE
あるいは空文字列にプロパティを追加してオブジェクトに変換しようとすると、
これまでのような E_STRICT
エラーではなく warning が発生するようになりました。
FALSE
ではなく array() となりました。
E_STRICT
を発行するようになりました。この場合の
htmlentities() の挙動が htmlspecialchars()
(こちらは以前からそうなっていた) と同じになりました。
erase
から integer
flags
に変わりました。
明示的に erase
に FALSE
を設定しているコードは、PHP 5.4 では期待通りに動きません。
この例 に従って、
PHP 5.3 と 5.4 のどちらでも動くコードを書きましょう。
次に示すキーワードは予約語となり、関数名やクラス名などの識別子の名前として使えなくなりました。
次の関数は PHP から削除されました。