ホーム > 日記 > PHPでクロージャ

PHPでクロージャ

そもそもクロージャって何さというところからスタートしたのですが、
クロージャ
自身が定義された環境(静的スコープ)において解決する関数のことである。関数とそれを評価する環境のペアであるともいえる。
p0t: PHPでクロージャ
なんとなくふんいき(なぜかへんかんできない)は理解。


<?php
function get_adder() {
   return create_function('', 'static $count = 0; return ++$count;');
}

$adder = get_adder();
echo $adder(); // 1
echo $adder(); // 2
echo $adder(); // 3
$adder2 = get_adder();
echo $adder2(); // 1
echo $adder2(); // 2
echo $adder2(); // 3
?>

それっぽい結果がでてるだけで違う気がする。


<?php
function get_adder() {
   $count = 0;
   return create_function('', 'static $count = ' . $count . '; return
++$count;');
}
$adder = get_adder();
echo $adder(); // 1
echo $adder(); // 2
echo $adder(); // 3
$adder2 = get_adder();
echo $adder2(); // 1
echo $adder2(); // 2
echo $adder2(); // 3
?>

これは明らかに違うと思う。

実装しようとするとcreate_function使うことになるけど、create_functionの仕様的に無理?
勉強して出直してきます。。。

カテゴリー: 日記 タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。