The future of PHP – PHP5.5, PHP5.6, PHP NG



The future of PHP – PHP5.5, PHP5.6, PHP NG

0 0


TheFutureOfPHP

勉強会用資料

On Github takyam-git / TheFutureOfPHP

The future of PHP

PHP5.5, PHP5.6, PHP NG

Created by takyam

Agenda

  • Released PHP changes
    • 5.4 -> 5.5
    • 5.5 -> 5.6
  • What's about PHP NG

First

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

2. Deprecated features

details

  • ext/mysql 拡張モジュール
  • preg_replace() の /e 修飾子
  • intl での非推奨
  • mcrypt での非推奨

3. Changed Functions

3. Changed Functions

details

  • set_error_handler() の引数に NULL を渡して呼ぶと、 エラーハンドラをリセットできるようになりました。
  • json_encode() に depth パラメータを渡せるようになりました。
  • pack() と unpack() で "a" や "A" を使ったときの挙動が変わりました。

4. New Features

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

6. Pickup changes

6. Pickup changes

And more...

see document here

Second

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

2. Deprecated features

details

  • 非互換のコンテキストからの呼び出し
  • $HTTP_RAW_POST_DATA および always_populate_raw_post_data
  • iconv および mbstring のエンコーディング設定

3. Changed Functions

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

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

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

6. Pickup changes

6. Pickup changes

And more...

see document here

Ok

PHP become good

and get more Chaos ...

...

LAST

the future of PHP

PHP NG

PHP NG !== PHP Not Good

PHP NG === PHP Next Generation

The future of PHP

is

PHP NG !

yeah!!!

What's mission of "PHP NG"

It's so simple

Be able to Fast!!

PHP NG changes inside of PHP

like this

https://wiki.php.net/phpng-upgrading

japanese here

example commits

result

PHP NG now nearly TWICE as fast as PHP 5.6

http://ckon.wordpress.com/2014/07/14/php-5-7-twice-as-fast/

PHP NG Performance Evaluation

https://wiki.php.net/phpng#performance_evaluation

PHP GET LESS CPU INSTRUCTION!!!

PHP GET SPEED!!!

(^q^)

When release?

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...

more details here

http://www.phpclasses.org/blog/post/234-PHPNG-Dramatic-Speedup-Features-Coming-in-PHP-6-Release.html

ok

PHP has good future

PHP has shining future

PHP is good

so

PHP is GOD

thank you for listing.

bye

This doc for all PHP lovers.