5分でわかるphpのクロージャ(web公開版)

17

Click here to load reader

Upload: hajikami

Post on 24-May-2015

4.471 views

Category:

Technology


3 download

DESCRIPTION

PHPカンファレンス関西(2011/04/02) 懇親会LTでのプレゼン資料です

TRANSCRIPT

Page 1: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

1

5分でわかるPHPのクロージャ

@hajikami

Page 2: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

2

自己紹介します

Page 3: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

3

● @hajikami● http://my-rest.icca.jp/blog/

– PHPでできる関数型プログラミング● 社会人2年目● PHPer…のはず

– 仕事ではPro*CやJavaを読んでる

Page 4: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

4

【前提:対象者】PHPで関数が作れる人

話をする前に

Page 5: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

5

前提:これがわかること

<?phpfunction less_than($a, $b) { return ($a < $b);}

Page 6: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

6

これで銅鑼がなっても大丈夫!(註:本LTでは5分を過ぎると銅鑼が鳴って強制終了する)

結論

Page 7: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

7

結論

● クロージャ● 関数Aの中にある、関数Bのこと● 関数Aで使っている変数は、

関数Bでも使うことが出来る– 引数として与えなくても、使える

Page 8: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

8

関数

無名関数

クロージャ

流れ

Page 9: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

9

関数

<?php

// これが普通の関数

function less_than($a, $b) {

return ($a < $b);

}

// 呼び出しはこんな感じ

if(less_than($a, $b)) ...

Page 10: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

10

無名関数

<?php

// その名のとおり、名前のない関数

function($a, $b) {

return ($a < $b);

}

Page 11: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

11

無名関数

<?php

// 無名関数は変数に入れられるよ

$less_than = function($a, $b) {

return ($a < $b);

}

// 呼び出しはこんな感じ

if($less_than($a, $b)) ...

Page 12: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

12

無名関数

<?php

function some_process($a) {

// 関数内で作れば、ローカルな関数が作れるよ!

$less_than = function($a, $b) {

return ($a < $b);

}

// 呼び出しはこんな感じ

if($less_than($a, $b)) ...

}

Page 13: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

13

クロージャじゃない

<?php

function some_process($a) {

// $aを毎回与えるの手間だし、これじゃだめなの?

$less_than_a = function($b) { // ダメです!

return ($a < $b);

}

// 呼び出しはこんな感じ?

if($less_than_a($b)) ...

}

Page 14: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

14

クロージャ

<?php

function some_process($a) {

// useキーワードを使ってください!

$less_than_a = function($b) use ($a) {

return ($a < $b);

}

// 呼び出しはこんな感じ

if($less_than_a($b)) ...

}

Page 15: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

15

やった!銅鑼がなってない!

まとめ

Page 16: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

16

まとめ

● クロージャ● 関数Aの中にある、関数Bのこと

– some_processの中にある、$less_than_a● 関数Aで使っている変数は、

関数Bでも使うことが出来る– 引数として与えなくても、使える– 引数がだらだらと増えることが無くなる!

● PHPの場合– 5.3.0 以降で使える– useキーワードが必要– 変数に無名関数を格納すると使いやすいよ!

Page 17: 5分でわかるPHPのクロージャ(web公開版)

2011/04/02 5分でわかるPHPのクロージャ

17

ありがとうございました!

以上