More Related Content
Similar to PHP language update 201211
Similar to PHP language update 201211 (20)
More from Moriyoshi Koizumi
More from Moriyoshi Koizumi (20)
PHP language update 201211
- 6. PHP 5.5 alpha1の目玉 に基づく
断と偏見
独
1.ジェネレータとコルーチン
2.foreachで変数分解だ!!!!
3.empty()のカッコ内に変数
以外が指定可能に!?
4.finally
5.社畜バグ修正
- 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 started
function 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)
- 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";
}
- 15. finallyの落とし穴
Fatal errorが発生すると
finallyが呼ばれない
<?php
try { Fatal error: Unsupported operand types
array() + 0;
} finally {
echo "finallyn"; // never get here!
}
- 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)
Friday
Friday