closure incoming

| | コメント(9) | トラックバック(0)

http://d.hatena.ne.jp/masugata/20080709#p1 いやっほおおお!日をまたいでいてすぐ眠りたいのですが、が… php-6.0-dev がベンチに座ってチャックを下ろす姿を見てホイホイ落としちゃったのだ。

<?php

$hikonyann = function ($multiplier)
{
    return str_repeat(’ひこにゃん’, $multiplier);
};

echo $hikonyann();
ひこにゃんひこにゃんひこにゃん

うんうんいいよー。レキシカル変数を参照するには?use () で宣言するのか。

$name = 'ひこにゃん';
$hikonyann = function ($multiplier) use ($name)
{
    return str_repeat($name, $multiplier);
};

echo $hikonyann(3) . PHP_EOL;
ひこにゃんひこにゃんひこにゃん

うんうんいいよー。このレキシカル変数は値渡し?参照渡し?

<?php

$name = 'ひこにゃん';
$hikonyann = function ($multiplier) use ($name)
{
    return str_repeat($name, $multiplier);
};

echo $hikonyann(3) . PHP_EOL;
$name = 'しまさこにゃん';
echo $hikonyann(3) . PHP_EOL;
ひこにゃんひこにゃんひこにゃん
ひこにゃんひこにゃんひこにゃん

値渡しですね。& で参照渡しになる、と。

$name = 'ひこにゃん';
$hikonyann = function ($multiplier) use (&$name)
{
    return str_repeat($name, $multiplier);
};

echo $hikonyann(3) . PHP_EOL;
$name = 'しまさこにゃん';
echo $hikonyann(3) . PHP_EOL;
ひこにゃんひこにゃんひこにゃん
しまさこにゃんしまさこにゃんしまさこにゃん

クラスと組み合わせると?

<?php

class Mascot
{
    private $name;
    
    public function __construct($name)
    {
        $this->name = $name;
    }
    
    public function generate()
    {
        return function ($multiplier)
        {
            return str_repeat($this->name, $multiplier);
        };
    }
}

$hikonyann = new Mascot('ひこにゃん');
$generator = $hikonyann->generate();
echo $generator(3) . PHP_EOL;
ひこにゃんひこにゃんひこにゃん

$this は明示的に指定しなくていいんだね。他は、どんな呼び出し方があるのかな?

<?php

$lamda = function () { debug_print_backtrace(); };

$lamda();
$lamda->__invoke();
call_user_func($lamda);
#0  lambda() called at [*:\********\closure.php:5]
#0  lambda()
#1  Closure->__invoke() called at [*:\********\closure.php:6]
#0  lambda()
#1  call_user_func(Closure Object ()) called at [*:\********\closure.php:7]

あら?オブジェクト?

<?php echo get_class(function () {});
Closure

まぁ、Closure クラスですって!ReflectionObject の出番よ。

<?php Reflection::export(new ReflectionObject(function () {}));
Object of class [ <internal> final class Closure ] {

  - Constants [0] {
  }

  - Static properties [0] {
  }

  - Static methods [0] {
  }

  - Properties [0] {
  }

  - Dynamic properties [0] {
  }

  - Methods [0] {
  }
}

まっさら。__invoke() はマジックメソッド扱いなのかしら?

時間が出来たら詳しく調べます…。

トラックバック(0)

このブログ記事を参照しているブログ一覧: closure incoming

このブログ記事に対するトラックバックURL: http://zenith.sakura.ne.jp/mt/mt-tb.cgi/31

コメント(9)

Incredibly cool! I assistance your view!

Yes! I agree what you say!

Incredibly cool! I assistance your view!

Replica designer handbags can not only meet the needs of fashion lovers but also can need fashion lovers pay half the price of original ones or even less. Usually replica designer handbags have the very similar design with the original ones and the same high quality as the original ones, meanwhile replica designer handbags can offer people many different choices from styles to colors, so we have a great chance to find our favorite ones, why should we refuse to buy replica designer handbags since they have so many kinds of advantages?

Each software as well as software features it is pros and also crons and so the absolutely incorrect sighting the actual undesirable reasons for that. These have the vast majority of great items and as enough time passes these types of weak points will likely be soughted out there. . -= GadgetGuide4U's previous weblog... Google Application Regarding Android has become Avaiable =-.

Romney definitely will relieve his / her taxes once the some other shills launch theirs. Like say a new Nancy Pelosi.

Great write-up to check unseen people. But On the web additionally seeking the idea for Skype hello there, at this point aol offers patched fresh diagnose approach likewise we have to hold out even more days intended for instant messaging invisible to be effective properly: )

Tokio (Reuters) - Die Aussicht auf eine Abschw?chung der chinesischen Wirtschaft hat zu Wochenbeginn die Stimmung an den B?rsen in Fernost getrübt.

Die Anleger verhielten sich am Montag zurückhaltend und verwiesen auf die erwarteten Konjunkturdaten aus China. Der Tokioter Nikkei-In

After seen some contrtor, exploit some crafted contrt that might therefore turn out to be adhered to in the traditional.

2. Design a particular e-card utilising pr announcements e-card creater through fla not to mention transmit it again towards just about anyone from inbox.
This really sothing

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、zenithが2008年7月13日 03:18に書いたブログ記事です。

ひとつ前のブログ記事は「MoE Wiki 用検索エンジン」です。

次のブログ記事は「__invoke()」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.12