SlideShare a Scribd company logo
1 of 17
Download to read offline
5分でわかるPHPのクロージャ
                                      1




             @hajikami




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




             自己紹介します




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


●   @hajikami
    ●   http://my-rest.icca.jp/blog/
         –   PHPでできる関数型プログラミング
    ●   社会人2年目
    ●   PHPer…のはず
         –   仕事ではPro*CやJavaを読んでる




2011/04/02                             5分でわかるPHPのクロージャ
話をする前に
                                        4




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




2011/04/02                 5分でわかるPHPのクロージャ
前提:これがわかること
                                      5



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




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




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




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


●   クロージャ
    ●   関数Aの中にある、関数Bのこと
    ●   関数Aで使っている変数は、
        関数Bでも使うことが出来る
         –   引数として与えなくても、使える




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




              関数

              ↓

             無名関数

              ↓

             クロージャ

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


<?php
// これが普通の関数
function less_than($a, $b) {
     return ($a < $b);
}


// 呼び出しはこんな感じ
if(less_than($a, $b)) ...




2011/04/02                     5分でわかるPHPのクロージャ
無名関数
                                     10


<?php
// その名のとおり、名前のない関数
function($a, $b) {
     return ($a < $b);
}




2011/04/02               5分でわかるPHPのクロージャ
無名関数
                                              11


<?php
// 無名関数は変数に入れられるよ
$less_than = function($a, $b) {
     return ($a < $b);
}


// 呼び出しはこんな感じ
if($less_than($a, $b)) ...




2011/04/02                        5分でわかるPHPのクロージャ
無名関数
                                                   12


<?php
function some_process($a) {
     // 関数内で作れば、ローカルな関数が作れるよ!
     $less_than = function($a, $b) {
             return ($a < $b);
     }
     // 呼び出しはこんな感じ
     if($less_than($a, $b)) ...
}


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)) ...
}


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)) ...
}


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




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




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


●   クロージャ
    ●   関数Aの中にある、関数Bのこと
         –   some_processの中にある、$less_than_a
    ●   関数Aで使っている変数は、
        関数Bでも使うことが出来る
         –   引数として与えなくても、使える
         –   引数がだらだらと増えることが無くなる!
    ●   PHPの場合
         –   5.3.0 以降で使える
         –   useキーワードが必要
         –   変数に無名関数を格納すると使いやすいよ!
2011/04/02                              5分でわかるPHPのクロージャ
以上
                                    17




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




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

More Related Content

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

Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
 

Similar to 5分でわかるPHPのクロージャ(web公開版) (20)

Nom de fonction français
Nom de fonction françaisNom de fonction français
Nom de fonction français
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
 
20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造
 
FukuokaPHP 3
FukuokaPHP 3FukuokaPHP 3
FukuokaPHP 3
 
PHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩くPHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩く
 
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecation
 
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014 FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
 
第21回Creators MeetUp
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUp
 
PHP AV BINDING
PHP AV BINDINGPHP AV BINDING
PHP AV BINDING
 
20111029 rubyon php
20111029 rubyon php20111029 rubyon php
20111029 rubyon php
 
Phpでアプリケーションサーバー
PhpでアプリケーションサーバーPhpでアプリケーションサーバー
Phpでアプリケーションサーバー
 
最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介
 
PHP5技術者認定初級試験を受験しました
PHP5技術者認定初級試験を受験しましたPHP5技術者認定初級試験を受験しました
PHP5技術者認定初級試験を受験しました
 
PHP-ML で手書き数字認識
PHP-ML で手書き数字認識PHP-ML で手書き数字認識
PHP-ML で手書き数字認識
 
PHPの今とこれから2019
PHPの今とこれから2019PHPの今とこれから2019
PHPの今とこれから2019
 
PHPの今とこれから2015
PHPの今とこれから2015PHPの今とこれから2015
PHPの今とこれから2015
 
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
 
5分でわかる? 関数型 PHP の潮流
5分でわかる? 関数型 PHP の潮流5分でわかる? 関数型 PHP の潮流
5分でわかる? 関数型 PHP の潮流
 
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料
 

More from hajikami (11)

これまでの日本語の話をしよう
これまでの日本語の話をしようこれまでの日本語の話をしよう
これまでの日本語の話をしよう
 
関数型を盲信するその前に
関数型を盲信するその前に関数型を盲信するその前に
関数型を盲信するその前に
 
ふつうの人こそ、ちょっと発表してみたらいいと思う
ふつうの人こそ、ちょっと発表してみたらいいと思うふつうの人こそ、ちょっと発表してみたらいいと思う
ふつうの人こそ、ちょっと発表してみたらいいと思う
 
サラリーマンプログラマと2つ目の武器
サラリーマンプログラマと2つ目の武器サラリーマンプログラマと2つ目の武器
サラリーマンプログラマと2つ目の武器
 
言語交換SNS Lang-8 で8ヶ月間外国語を書き続けてみた
言語交換SNS Lang-8 で8ヶ月間外国語を書き続けてみた言語交換SNS Lang-8 で8ヶ月間外国語を書き続けてみた
言語交換SNS Lang-8 で8ヶ月間外国語を書き続けてみた
 
How To Enjoy Lang-8
How To Enjoy Lang-8How To Enjoy Lang-8
How To Enjoy Lang-8
 
言語交換SNS Lang-8 で4ヶ月間英語を書き続けてみた(Web公開版)
言語交換SNS Lang-8 で4ヶ月間英語を書き続けてみた(Web公開版)言語交換SNS Lang-8 で4ヶ月間英語を書き続けてみた(Web公開版)
言語交換SNS Lang-8 で4ヶ月間英語を書き続けてみた(Web公開版)
 
インデックスのおはなし
インデックスのおはなしインデックスのおはなし
インデックスのおはなし
 
わかるようにする
わかるようにするわかるようにする
わかるようにする
 
プレゼンの方法(ただし5分に限る) web公開版
プレゼンの方法(ただし5分に限る) web公開版プレゼンの方法(ただし5分に限る) web公開版
プレゼンの方法(ただし5分に限る) web公開版
 
魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)
 

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

  • 1. 5分でわかるPHPのクロージャ 1 @hajikami 2011/04/02 5分でわかるPHPのクロージャ
  • 2. 2 自己紹介します 2011/04/02 5分でわかるPHPのクロージャ
  • 3. 3 ● @hajikami ● http://my-rest.icca.jp/blog/ – PHPでできる関数型プログラミング ● 社会人2年目 ● PHPer…のはず – 仕事ではPro*CやJavaを読んでる 2011/04/02 5分でわかるPHPのクロージャ
  • 4. 話をする前に 4 【前提:対象者】 PHPで関数が作れる人 2011/04/02 5分でわかるPHPのクロージャ
  • 5. 前提:これがわかること 5 <?php function less_than($a, $b) { return ($a < $b); } 2011/04/02 5分でわかるPHPのクロージャ
  • 6. 結論 6 これで銅鑼がなっても大丈夫! (註:本LTでは5分を過ぎると銅鑼が鳴って強制終了する) 2011/04/02 5分でわかるPHPのクロージャ
  • 7. 結論 7 ● クロージャ ● 関数Aの中にある、関数Bのこと ● 関数Aで使っている変数は、 関数Bでも使うことが出来る – 引数として与えなくても、使える 2011/04/02 5分でわかるPHPのクロージャ
  • 8. 流れ 8 関数 ↓ 無名関数 ↓ クロージャ 2011/04/02 5分でわかるPHPのクロージャ
  • 9. 関数 9 <?php // これが普通の関数 function less_than($a, $b) { return ($a < $b); } // 呼び出しはこんな感じ if(less_than($a, $b)) ... 2011/04/02 5分でわかるPHPのクロージャ
  • 10. 無名関数 10 <?php // その名のとおり、名前のない関数 function($a, $b) { return ($a < $b); } 2011/04/02 5分でわかるPHPのクロージャ
  • 11. 無名関数 11 <?php // 無名関数は変数に入れられるよ $less_than = function($a, $b) { return ($a < $b); } // 呼び出しはこんな感じ if($less_than($a, $b)) ... 2011/04/02 5分でわかるPHPのクロージャ
  • 12. 無名関数 12 <?php function some_process($a) { // 関数内で作れば、ローカルな関数が作れるよ! $less_than = function($a, $b) { return ($a < $b); } // 呼び出しはこんな感じ if($less_than($a, $b)) ... } 2011/04/02 5分でわかるPHPのクロージャ
  • 13. クロージャじゃない 13 <?php function some_process($a) { // $aを毎回与えるの手間だし、これじゃだめなの? $less_than_a = function($b) { // ダメです! return ($a < $b); } // 呼び出しはこんな感じ? if($less_than_a($b)) ... } 2011/04/02 5分でわかるPHPのクロージャ
  • 14. クロージャ 14 <?php function some_process($a) { // useキーワードを使ってください! $less_than_a = function($b) use ($a) { return ($a < $b); } // 呼び出しはこんな感じ if($less_than_a($b)) ... } 2011/04/02 5分でわかるPHPのクロージャ
  • 15. まとめ 15 やった!銅鑼がなってない! 2011/04/02 5分でわかるPHPのクロージャ
  • 16. まとめ 16 ● クロージャ ● 関数Aの中にある、関数Bのこと – some_processの中にある、$less_than_a ● 関数Aで使っている変数は、 関数Bでも使うことが出来る – 引数として与えなくても、使える – 引数がだらだらと増えることが無くなる! ● PHPの場合 – 5.3.0 以降で使える – useキーワードが必要 – 変数に無名関数を格納すると使いやすいよ! 2011/04/02 5分でわかるPHPのクロージャ
  • 17. 以上 17 ありがとうございました! 2011/04/02 5分でわかるPHPのクロージャ