The future of PHP
PHP5.5, PHP5.6, PHP NG
Created by takyam
Agenda
- Released PHP changes
- What's about PHP NG
PHP 5.4 -> PHP 5.5 changes
1. Backward Incompatible Changes
1. Backward Incompatible Changes
details
- Windows XP および 2003 のサポートの終了
- 大文字小文字を区別しない比較がロケールに依存しなくなる
- pack() と unpack() の変更
- self や parent そして static が、どんな場合であっても大文字小文字を区別しないようになる
- PHP ロゴの GUID の削除
- 内部的な実行方法の変更
2. Deprecated features
details
- ext/mysql 拡張モジュール
- preg_replace() の /e 修飾子
- intl での非推奨
- mcrypt での非推奨
3. Changed Functions
details
- set_error_handler() の引数に NULL を渡して呼ぶと、 エラーハンドラをリセットできるようになりました。
- json_encode() に depth パラメータを渡せるようになりました。
- pack() と unpack() で "a" や "A" を使ったときの挙動が変わりました。
4. New Features
details
- ジェネレータの追加
- finally キーワードの追加
- 新しいパスワードハッシュ API
- foreach が list() に対応
- empty() が任意の式に対応
- array リテラルと string リテラルのデリファレンス
- ::class によるクラス名の解決
- OPcache 拡張モジュールの追加
- foreach が非スカラーのキーに対応
- Apache 2.4 ハンドラが Windows に対応
- GD の改良
5. Many new functions/classes/methods
5. Many new functions/classes/methods
- array_column()
- boolval()
- json_last_error_msg()
- password_get_info()
- password_hash()
- password_needs_rehash()
- password_verify()
- ... and many more
total 128 functions/classes/methods
5. Many new functions/classes/methods
See details on official document
PHP 5.5 -> PHP 5.6 changes
1. Backward Incompatible Changes
1. Backward Incompatible Changes
details
- 配列リテラルを用いてクラスのプロパティに配列を設定した場合、配列のキーが上書きされない
- json_decode() が、より厳格に
- ストリームラッパーが、SSL/TLS を使っている場合のピア証明書とホスト名の検証にデフォルトで対応
- GMP リソースがオブジェクトに
- Mcrypt 関数は、有効なキーと IV を要求する
2. Deprecated features
details
- 非互換のコンテキストからの呼び出し
- $HTTP_RAW_POST_DATA および always_populate_raw_post_data
- iconv および mbstring のエンコーディング設定
3. Changed Functions
details
- crypt() で、salt パラメータを省略したときに E_NOTICE が発生するようになりました。
- substr_compare() が、 length パラメータに 0 を受け付けるようになりました。
- unserialize() に渡したシリアライズ済みデータが、 自身のコンストラクタを呼ばないようなオブジェクトに改変されている場合に、 処理が失敗するようになりました。
- @file 構文を使ったアップロードは、 CURLOPT_SAFE_UPLOAD オプションを FALSE にしたときだけサポートするようになりました。 かわりに CURLFile を使うようにしましょう。
3. Changed Functions
details
- mcrypt_create_iv() の source パラメータのデフォルトが、 MCRYPT_DEV_RANDOM から MCRYPT_DEV_URANDOM に変わりました。
- stream_socket_enable_crypto() で、 crypto_type パラメータをオプションにすることができるようになりました。 ストリームの SSL コンテキストに、新しいオプション crypto_type を指定します。
3. Changed Functions
details
- pg_insert()、pg_select()、 pg_update()、pg_delete() が、実験的な関数ではなくなりました。
- pg_send_execute()、 pg_send_prepare()、pg_send_query()、 pg_send_query_params() が、 データベース接続に使っているソケットストリームがノンブロッキングモードの場合は、 クエリの書き込み完了まで待つようなブロックをしなくなりました。
3. Changed Functions
details
- ReflectionClass::newInstanceWithoutConstructor() で、final ではない内部関数をインスタンス化できるようになりました。
- XMLReader::getAttributeNs() と XMLReader::getAttributeNo() が、 属性が見つからない場合に NULL を返すようになりました。これは XMLReader::getAttribute() と同じ挙動です。
4. New Features
details
- 定数のスカラー式
- ... による可変個引数関数
- ... による引数のアンパック
- 累乗演算子 **
- use function および use const
- phpdbg
- デフォルトの文字エンコーディング
- php://input が再利用可能に
4. New Features
details
- 巨大なファイルのアップロード
- GMP での演算子オーバーロードのサポート
- hash_equals() による、タイミング攻撃に対応した文字列比較
- __debugInfo()
- gost-crypto ハッシュアルゴリズム
- SSL/TLS の改良
- pgsql の非同期サポート
5. Bit new functions
detail
- gmp_root()
- gmp_rootrem()
- hash_equals()
- ldap_escape()
- ldap_modify_batch()
- mysqli_get_links_stats()
- ... and more
total 22 functions
Thre is no new classe and method
PHP NG === PHP Next Generation
What's mission of "PHP NG"
PHP NG changes inside of PHP
PHP GET LESS CPU INSTRUCTION!!!
The phpng branch is merged into master and is going to be a base for the next major PHP release
maybe merged in PHP6 or PHP7...
bye
This doc for all PHP lovers.