PHP language update 201211
Upcoming SlideShare
Loading in...5
×
 

PHP language update 201211

on

  • 3,018 views

 

Statistics

Views

Total Views
3,018
Views on SlideShare
2,986
Embed Views
32

Actions

Likes
5
Downloads
0
Comments
0

6 Embeds 32

https://twitter.com 25
http://t.co 3
http://b.hatena.ne.jp 1
http://htn.to 1
http://reader.livedoor.com 1
https://twimg0-a.akamaihd.net 1

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

PHP language update 201211 Presentation Transcript

  • 1. はい
  • 2. 始まってしまいました
  • 3. PHP Language UpdateMoriyoshi Koizumi <moriyoshi@php.net>
  • 4. このプレゼンの見解はThe PHP Development Teamとは関係ありません This presentation does not reflect the opinions of the PHP development team.
  • 5. Nov 15, 2012PHP 5.5 alpha1 released
  • 6. PHP 5.5 alpha1の目玉 に基づく 断と偏見 独1.ジェネレータとコルーチン2.foreachで変数分解だ!!!!3.empty()のカッコ内に変数 以外が指定可能に!?4.finally5.社畜バグ修正
  • 7. ジェネレータとコルーチンyieldキーワードの追加yieldを含む関数はジェネレータになる ジェネレータは特殊なイテレータとして ユーザには見えるsend()メソッドとの組み合わせによるコルーチン
  • 8. ジェネレータとコルーチンスクリプト 実行結果<?php int(1)function foo() { int(2) yield 1; yield 2; int(3) yield 3;}foreach (foo() as $a) { var_dump($a);}
  • 9. ジェネレータとコルーチンスクリプト 実行結果<?php startedfunction coroutine() { echo "startedn"; 1 while (true) { 2 $val = yield; echo "$valn"; }}$c = coroutine();$c->send(1);$c->send(2);
  • 10. ジェネレータとコルーチン Pythonの場合スクリプト 実行結果def coroutine(): started print("started") 1 while True: 2 val = yield print(val)c = coroutine()c.next()c.send(1)c.send(2)
  • 11. foreachで変数分解だ!!!!foreachステートメントで配列要素を分解できるなぜ今までできなかったのか疑問できてうれしいのかも(やや)疑問
  • 12. foreachで変数分解だ!!!!スクリプト 実行結果<?php$list = array( 1, 2 array(1, 2), 3, 4 array(3, 4), array(5, 6) 5, 6);foreach ($list as list($a, $b)){ echo "$a, $bn";}
  • 13. empty()のカッコ内に変数以外が指定可能に!?見てもらった方が早い<?phpvar_dump(empty(strlen()));なぜこれまでできなかったのだろう...
  • 14. finallytry~catch~finallyなぜいままで...
  • 15. finallyの落とし穴 Fatal errorが発生すると finallyが呼ばれない<?phptry { Fatal error: Unsupported operand types array() + 0;} finally { echo "finallyn"; // never get here!}
  • 16. 社畜バグ修正DateTimeクラスのmodify()メソッドでは次のような機能をサポートしている<?php$d = new DateTime("2012-11-02");$d->modify("+1 days");var_dump($d->format(Y-m-d)); // 2012-11-03weekdays (営業日ベースのオフセット)の処理に悲劇が
  • 17. 社畜バグ修正スクリプト<?php$d = new DateTime("2012-11-02");echo $d->format(l), "n";$d->modify("+5 weekdays");echo $d->format(l), "n"; Bug #61642 modify("+5 weekdays") returns Sunday実行結果 (∼PHP 5.4)Friday _人人人人人人_Sunday > 突然の社畜 <  ̄^Y^Y^Y^Y^Y^Y ̄
  • 18. 社畜バグ修正スクリプト<?php$d = new DateTime("2012-11-02");echo $d->format(l), "n";$d->modify("+5 weekdays");echo $d->format(l), "n";実行結果 (PHP 5.5 alpha1)FridayFriday
  • 19. ま と めハワイ諸島は10cm/年というスピードで伊豆半島に近づいているアンドロメダ大銀河は銀河系に40km/時というスピードで近づいているPHPはPythonに近づいている いずれも衝突の瞬間を生きているうちに 目撃できないのが残念です