Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
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

More Related Content

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