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