アクセスログを見ていたら、PHPのバージョンアップでの変更点をまとめた記事を見つけました。
自分でも公開した記憶がない・・・。 (^ ^
いや、調べた記憶はありましたよ。
すっかり忘れておりました。
そういえば、先日PHP5.4.10をインストールした際に、
PHP5.4のバージョンアップ情報を調べてなかったなと思いだし、
ちょっと調べてみたのでまとめておきます。
ついでにPHP5.5も一足お先に調べてみました。
PHP 5.4.10 (2012年12月20日リリース)
PHP 5.3.20 (2012年12月20日リリース)
5.5はまだアルファリリースですね。
2013年1月10日 PHP 5.5.0 Alpha3リリース
2012年12月21日 PHP 5.5.0 Alpha2リリース
2012年11月15日 PHP 5.5.0 Alpha1リリース
セーフモードのサポート中止
マジッククォートの削除
ini 設定 register_globals と register_long_arrays が削除
呼び出し時の参照渡しのサポート中止
breakとcontinueへの引数で、変数が利用不可に
Date拡張モジュールでTZ 環境変数によるタイムゾーンの設定をサポート中止
文字列変数への非数値オフセット指定時の取り扱い変更
isset($a['foo']) → false
empty($a['foo']) → true
配列を文字列変換するとE_NOTICEが発生
NULL、FALSE、空文字列にプロパティを追加するとwarningが発生
スーパーグローバルをパラメータとして使うとfatal error
ハッシュアルゴリズム Salsa10 および Salsa20 が削除
・array_combine() で空配列を2つ指定した場合の返り値がFALSEからarray()に変更
・htmlentities() にアジアの文字を使うと E_STRICT を発行
・予約語の追加
trait
callable
insteadof
・関数の削除
define_syslog_variables()
import_request_variables()
session_is_registered() 、 session_register() および session_unregister()
エイリアス
mysqli_bind_param(),
mysqli_bind_result(),
mysqli_client_encoding(),
mysqli_fetch(),
mysqli_param_count(),
mysqli_get_metadata(),
mysqli_send_long_data(),
mysqli::client_encoding() および
mysqli_stmt::stmt()
・traitのサポート
・配列の短縮構文が追加
・関数の返り値を配列として扱えるように foo()[0]等
・クロージャ(無名関数)で$thisをサポート
・<?=が常に有効に
・インスタンス作成時にクラスのメンバへのアクセスが可能に (new Foo)->bar()
・Class::{expr}() 構文をサポート
・二進数フォーマットが追加 例:0b001001101
・警告メッセージの改善
・セッションモジュールでファイルのアップロード状況を追跡可能に
session.upload_progress.enabled を有効にする
・CLI モードで動く、開発用のビルトインウェブサーバの組み込み
呼び出し時の参照渡しのサポート中止
が気になりましたが、参照渡しを使うには、ちゃんと関数定義の段階で
function foo(&$var){}としておけということですね。
参照)
http://php.net/manual/ja/migration54.changes.php
Windows XPおよび2003のサポート終了
大文字小文字を区別しない比較がロケールごとに(トルコ語やアゼルバイジャン語などで)変わる。
PHPロゴ表示のためのGUIDの削除
内部的な実行方法の変更 zend_execute()関数がオーバーライドできなくなった。
ジェネレーターの追加
try-catchブロックでfinallyが利用可能に
foreachがリストに対応
empty()関数の引数が任意の式に対応
arrayリテラルとstringリテラルのデリファレンス
新しいパスワードハッシュAPIが利用可能に
Apache2.4ハンドラがWindowsに対応
参照)
http://php.net/manual/ja/migration55.changes.php
いろいろと変更されていますが、大きく影響しそうなのは
参照私のサポート中止ですかね。
以前作ったシステムはPHP4.xとの互換性保持のため、あちこち参照渡しを使っていました。
いろいろ調べていたら、PHP5.3からPHP5.4への変更で
パフォーマンスが10%程度上がっているようです。
自分でも公開した記憶がない・・・。 (^ ^
いや、調べた記憶はありましたよ。
すっかり忘れておりました。
そういえば、先日PHP5.4.10をインストールした際に、
PHP5.4のバージョンアップ情報を調べてなかったなと思いだし、
ちょっと調べてみたのでまとめておきます。
ついでにPHP5.5も一足お先に調べてみました。
2013年1月17日現在の安定バージョン
PHP 5.4.10 (2012年12月20日リリース)
PHP 5.3.20 (2012年12月20日リリース)
5.5はまだアルファリリースですね。
2013年1月10日 PHP 5.5.0 Alpha3リリース
2012年12月21日 PHP 5.5.0 Alpha2リリース
2012年11月15日 PHP 5.5.0 Alpha1リリース
PHP5.3からPHP5.4への変更点
セーフモードのサポート中止
マジッククォートの削除
ini 設定 register_globals と register_long_arrays が削除
呼び出し時の参照渡しのサポート中止
breakとcontinueへの引数で、変数が利用不可に
Date拡張モジュールでTZ 環境変数によるタイムゾーンの設定をサポート中止
文字列変数への非数値オフセット指定時の取り扱い変更
isset($a['foo']) → false
empty($a['foo']) → true
配列を文字列変換するとE_NOTICEが発生
NULL、FALSE、空文字列にプロパティを追加するとwarningが発生
スーパーグローバルをパラメータとして使うとfatal error
ハッシュアルゴリズム Salsa10 および Salsa20 が削除
・array_combine() で空配列を2つ指定した場合の返り値がFALSEからarray()に変更
・htmlentities() にアジアの文字を使うと E_STRICT を発行
・予約語の追加
trait
callable
insteadof
・関数の削除
define_syslog_variables()
import_request_variables()
session_is_registered() 、 session_register() および session_unregister()
エイリアス
mysqli_bind_param(),
mysqli_bind_result(),
mysqli_client_encoding(),
mysqli_fetch(),
mysqli_param_count(),
mysqli_get_metadata(),
mysqli_send_long_data(),
mysqli::client_encoding() および
mysqli_stmt::stmt()
・traitのサポート
・配列の短縮構文が追加
・関数の返り値を配列として扱えるように foo()[0]等
・クロージャ(無名関数)で$thisをサポート
・<?=が常に有効に
・インスタンス作成時にクラスのメンバへのアクセスが可能に (new Foo)->bar()
・Class::{expr}() 構文をサポート
・二進数フォーマットが追加 例:0b001001101
・警告メッセージの改善
・セッションモジュールでファイルのアップロード状況を追跡可能に
session.upload_progress.enabled を有効にする
・CLI モードで動く、開発用のビルトインウェブサーバの組み込み
呼び出し時の参照渡しのサポート中止
が気になりましたが、参照渡しを使うには、ちゃんと関数定義の段階で
function foo(&$var){}としておけということですね。
参照)
http://php.net/manual/ja/migration54.changes.php
PHP5.4からPHP5.5への変更点
Windows XPおよび2003のサポート終了
大文字小文字を区別しない比較がロケールごとに(トルコ語やアゼルバイジャン語などで)変わる。
PHPロゴ表示のためのGUIDの削除
内部的な実行方法の変更 zend_execute()関数がオーバーライドできなくなった。
ジェネレーターの追加
try-catchブロックでfinallyが利用可能に
foreachがリストに対応
empty()関数の引数が任意の式に対応
arrayリテラルとstringリテラルのデリファレンス
新しいパスワードハッシュAPIが利用可能に
Apache2.4ハンドラがWindowsに対応
参照)
http://php.net/manual/ja/migration55.changes.php
いろいろと変更されていますが、大きく影響しそうなのは
参照私のサポート中止ですかね。
以前作ったシステムはPHP4.xとの互換性保持のため、あちこち参照渡しを使っていました。
いろいろ調べていたら、PHP5.3からPHP5.4への変更で
パフォーマンスが10%程度上がっているようです。