5分でわかる? 関数型 PHP の潮流

Post on 29-Nov-2014

530 views 0 download

description

今、関数型 PHP が熱い

Transcript of 5分でわかる? 関数型 PHP の潮流

5分でわかる? 関数型PHPの潮流

@yuya_takeyama

関数型PHP が熱い

functional

でも、 お高いん でしょう?

(ハードル的な意味で)

はい

ぶっちゃけ 僕も

よくわかってない

でも

functional

「機能的」

OO厨でも 学ぶべき

ところは多い

押さえておくべき キーワード

参照透過性 (または副作用につ

いて)

例えば、 forをやめる

例えば、 setterをやめる

例えば、 変数の再代入を

やめる

immutability

高階関数

関数を 生成する関数

あるいは

関数を 引数に受ける

関数

(デザパタ厨には お馴染み

Strategy Pattern)

遅延評価

$range = function ($start, $end, $step = 1) { for ($i = 1; $i <= $end; $i += $step) { yield $i; } }; !

foreach ($range(1, 100) as $n) { echo $n, PHP_EOL; }

ジェネレータでrange

関数型PHP が熱い

PHP5.6の 新機能

use function

自分の ベンダ空間に

関数定義しまくり

use function my_awesome_func;

variadic parameters

可変長引数

function(...$args) {}

farewell to

func_get_args()

parameters unpacking

引数の 動的展開

func(...$args);

farewell to

call_user_func_array()

おすすめ ライブラリ

nikic¥iter

ジェネレータ実装者 による

関数型コレクション操作ライブラリ群

map reduce filter

全部 遅延 評価

igorw¥retry

超簡単に リトライが 実装できる

$user = retry(5, function () use ($id) { return User::find($id); });

in HHVM

$user = retry(5, () ==> User::find($id));

cool

あと

igorw¥retry issues#3

にopcodeレベルでの 詳説

知りたいが、 あなたを(ry

あとあと

この辺の話 Qiitaにもいろいろ 書いてるので

http://qiita.com/yuya_takeyama よろしくお願いします

それでは

このあたりで

Thank you for

Listening