古い PHP を使うときに問題となりそうな箇所

2015年10月28日 PHP 5.5 を追記

PHP 5.6 → 7.0

  • 無名関数の直接呼び出し (function() { ... })()

PHP 5.5 → 5.6

  • 定数式 (const ONE = 1; const TWO = ONE * 2;)
  • ... による可変個引数関数 (function f($req, $opt = null, ...$params) { ... })
  • ... による引数のアンパック ($arr = [2, 3]; f(1, ...$arr);)
  • 累乗演算子 ** および代入演算子 **=
  • use function および use const
  • php://input が2回以上オープンできるように
  • hash_equals() 関数の追加
  • 処理が厳格になったもの
    • json_decode() が JSON の仕様通りに true, false, null は小文字のみ受け付けるようになった
    • Mcrypt 関数が有効なキーと IV を与えない場合、失敗するようになった
    • cURL で @file 構文によってアップロードできないようになった。代わりに CURLFile を使う
  • DateTime
    • DateTimeImmutable::createFromMutable() の追加
  • GMP
  • PDO
    • PDO::pgsqlGetNotify(), PDO::pgsqlGetPid() の追加
  • Session
    • session_abort(), session_reset() の追加
  • Zip
    • ZipArchive::setPassword() の追加

PHP 5.4 → 5.5

  • ジェネレータが追加されました。 yield キーワードで利用します。
  • try-catch ブロックで finally が使えるようになりました。
  • 新しいパスワードハッシュ API
  • foreach で list() を使って、ネストした配列を個別の変数に展開できるようになりました。
  • empty() が変数以外の任意の式に対応
  • array リテラルと string リテラルデリファレンス
  • ::class によるクラス名の解決
  • foreach が非スカラーのキーに対応
  • DateTimeImmutable クラスの追加
  • GD の改良

PHP 5.3 → 5.4

  • トレイトのサポート
  • 配列の短縮構文

PHP 5.3.8 → 5.3.9

PHP 5.2 → 5.3

  • 名前空間 のサポートが追加されました。
  • 遅延静的束縛 のサポートが追加されました。
  • ネイティブクロージャ (ラムダ/無名関数) のサポートが追加されました。
  • json_encode() - options が追加されました。
  • json_decode() - depth が追加されました。
  • DateTime::add(), diff(), sub() など追加
  • class DateInterval, DatePeriol 追加
  • SQLite3 モジュール (class SQLite3)
  • 定数 __DIR__

PHP 5.1 → 5.2

  • SplFileObject::getFilename() は、PHP 5.2.1 以降ではファイルへの相対パスではなくファイル名のみを返すようになりました。
  • __toString() が、適切な場面で常にコールされるようになりました。
  • 拡張モジュール JSON
  • クラス DateTime, DateTimeZone