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