はい
始まってしまいました
PHP Language Update
Moriyoshi Koizumi <moriyoshi@php.net>
このプレゼンの見解は
The PHP Development Team
とは関係ありません

    This presentation does not reflect the opinions of
    the PHP development team.
Nov 15, 2012
PHP 5.5 alpha1 released
PHP 5.5 alpha1の目玉  に基づく
               断と偏見
              独
1.ジェネレータとコルーチン
2.foreachで変数分解だ!!!!
3.empty()のカッコ内に変数
  以外が指定可能に!?
4.finally
5.社畜バグ修正
ジェネレータとコルーチン
yieldキーワードの追加
yieldを含む関数はジェネレータになる
 ジェネレータは特殊なイテレータとして
 ユーザには見える
send()メソッドとの組み合わせによるコ
ルーチン
ジェネレータとコルーチン
スクリプト                     実行結果
<?php                     int(1)
function foo() {          int(2)
    yield 1;
    yield 2;              int(3)
    yield 3;
}

foreach (foo() as $a) {
    var_dump($a);
}
ジェネレータとコルーチン
スクリプト                    実行結果
<?php                    started
function coroutine() {
    echo "startedn";
                         1
    while (true) {       2
        $val = yield;
        echo "$valn";
    }
}

$c = coroutine();
$c->send(1);
$c->send(2);
ジェネレータとコルーチン
                  Pythonの場合
スクリプト                  実行結果
def coroutine():       started
    print("started")   1
    while True:        2
        val = yield
        print(val)

c = coroutine()
c.next()
c.send(1)
c.send(2)
foreachで変数分解だ!!!!

foreachステートメントで配列要素を
分解できる

なぜ今までできなかったのか疑問

できてうれしいのかも(やや)疑問
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";
}
empty()のカッコ内に変数以外
が指定可能に!?

見てもらった方が早い
<?php
var_dump(empty(strlen('')));




なぜこれまでできなかったのだろう...
finally


try~catch~finally
なぜいままで...
finallyの落とし穴
 Fatal errorが発生すると
 finallyが呼ばれない
<?php
try {                 Fatal error: Unsupported operand types
    array() + 0;
} finally {
    echo "finallyn"; // never get here!
}
社畜バグ修正
DateTimeクラスのmodify()メソッドで
は次のような機能をサポートしている
<?php
$d = new DateTime("2012-11-02");
$d->modify("+1 days");
var_dump($d->format('Y-m-d')); // 2012-11-03


weekdays (営業日ベースのオフセット)
の処理に悲劇が
社畜バグ修正
スクリプト
<?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 ̄
社畜バグ修正
スクリプト
<?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
ま と め

ハワイ諸島は10cm/年というスピードで伊豆半島に
近づいている
アンドロメダ大銀河は銀河系に40km/時というス
ピードで近づいている
PHPはPythonに近づいている


   いずれも衝突の瞬間を生きているうちに
   目撃できないのが残念です

More Related Content

PDF
Php2 s3
PDF
Php2 s2
PDF
unique_ptrにポインタ以外のものを持たせるとき
PDF
Local php-100828 2
PDF
Php2 s4
PDF
Php s4
Php2 s3
Php2 s2
unique_ptrにポインタ以外のものを持たせるとき
Local php-100828 2
Php2 s4
Php s4

What's hot (20)

PDF
Php2 s1
PPTX
An other world awaits you
PDF
JavaScript 勉強会 ― 変数・演算子・文
PDF
PHP5.5新機能「ジェネレータ」初心者入門
PDF
Kotlin勉強会 in ehime
PPTX
pecl-AOPの紹介
PDF
PHP の GC の話
PDF
Functional Way
PDF
おいしいLisp
PPTX
知ってるようで意外と知らないPHPの便利関数
PDF
From Java To Clojure
PDF
Node.js Error & Debug Leveling
PDF
Hack/HHVM 入門
PPTX
Keep yourself up to date
PPTX
Php in ruby
PDF
Goの文法の実例と解説
PPT
言語処理系入門4
PPTX
ナウなヤングにバカうけのイカしたタグ付き共用体
PDF
20分くらいでわかった気分になれるC++20コルーチン
PDF
#5:プログラミングの基本
Php2 s1
An other world awaits you
JavaScript 勉強会 ― 変数・演算子・文
PHP5.5新機能「ジェネレータ」初心者入門
Kotlin勉強会 in ehime
pecl-AOPの紹介
PHP の GC の話
Functional Way
おいしいLisp
知ってるようで意外と知らないPHPの便利関数
From Java To Clojure
Node.js Error & Debug Leveling
Hack/HHVM 入門
Keep yourself up to date
Php in ruby
Goの文法の実例と解説
言語処理系入門4
ナウなヤングにバカうけのイカしたタグ付き共用体
20分くらいでわかった気分になれるC++20コルーチン
#5:プログラミングの基本
Ad

Similar to PHP language update 201211 (20)

PDF
Modern PHP Programming @ PFI Seminar
PDF
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
PPTX
PHPCON_TOKYO_2022_Bigginer.pptx
PDF
PHPの今とこれから2021
PDF
PHPの今とこれから2014
PDF
PHPの今とこれから 2013
PPTX
第4回 PHPのおさらい
PDF
PHPコアから読み解くPHP5.5
PDF
徹底攻略!PHP5.4
PDF
PHPの今とこれから2025 (PHP Conference Japan 2025)
PDF
はじめてのPHP
PDF
PHPの今とこれから2023
PDF
Php5.5についてのメモ
PDF
PHPの教室「foreachを極める」
PDF
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
PDF
FukuokaPHP 3
PPTX
PHP基礎勉強会
PDF
知って得する標準関数の使い方
PDF
PHPの今とこれから2024 at PHP Conference Japan 2024
PDF
PHPの今とこれから2019
Modern PHP Programming @ PFI Seminar
PHP初心者セッション2023 〜ChatGPT時代の簡単な始め方〜
PHPCON_TOKYO_2022_Bigginer.pptx
PHPの今とこれから2021
PHPの今とこれから2014
PHPの今とこれから 2013
第4回 PHPのおさらい
PHPコアから読み解くPHP5.5
徹底攻略!PHP5.4
PHPの今とこれから2025 (PHP Conference Japan 2025)
はじめてのPHP
PHPの今とこれから2023
Php5.5についてのメモ
PHPの教室「foreachを極める」
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
FukuokaPHP 3
PHP基礎勉強会
知って得する標準関数の使い方
PHPの今とこれから2024 at PHP Conference Japan 2024
PHPの今とこれから2019
Ad

More from Moriyoshi Koizumi (20)

PDF
Goをカンストさせる話
PPTX
PHP7を魔改造した話
PPTX
Authentication, Authorization, OAuth, OpenID Connect and Pyramid
PDF
All I know about rsc.io/c2go
PPTX
HLSについて知っていることを話します
PPTX
Pyramidのrendererをカスタマイズする
PPTX
Hacking Go Compiler Internals / GoCon 2014 Autumn
PDF
Uguisudani
PDF
よいことも悪いこともぜんぶPHPが教えてくれた
PDF
Ik in action
PDF
PDF
Haxeについて
PDF
PDF
mod_himoteからはじめよう
PDF
HPHPは約束の地なのか
PDF
Pyfes201110
PDF
Phjosh(仮)プロジェクト
PDF
Aaなゲームをjsで
PDF
Aaなゲームをjsで
PDF
ctypes拡張モジュール
Goをカンストさせる話
PHP7を魔改造した話
Authentication, Authorization, OAuth, OpenID Connect and Pyramid
All I know about rsc.io/c2go
HLSについて知っていることを話します
Pyramidのrendererをカスタマイズする
Hacking Go Compiler Internals / GoCon 2014 Autumn
Uguisudani
よいことも悪いこともぜんぶPHPが教えてくれた
Ik in action
Haxeについて
mod_himoteからはじめよう
HPHPは約束の地なのか
Pyfes201110
Phjosh(仮)プロジェクト
Aaなゲームをjsで
Aaなゲームをjsで
ctypes拡張モジュール

PHP language update 201211