ねこさんとへびさんの新人技術ブログ

新人エンジニアのねこさんとへびさんの、技術向上のためのブログです。

Memo!シンプルな無名関数の使い方 - PHP

PHPの無名関数は、PHP5.3から導入されました。

無名関数:関数名をつけずに関数を作成する

もっともシンプルな使い方は、変数に関数を代入し、変数の値として実行します。

<?php
$greet = function($_message)
{
    printf("Hey!Hebisan, %s\r\n", $_message);
};

$greet('Who do you think you are?');
$greet('How dare you say that!');
$greet('Shut up!');

$greet変数を指定すると

$greet('Who do you think you are?');

$greetに代入されている関数が実行され、

Hey!Hebisan, Who do you think you are?

が出力される。

無名関数を配列の要素にして、ループでまわすような使い方もできます。
<?php

$functions = array(
    'func1' => function () {
        $message = 'Cut it out!';
        printf("Hey! %s %s\r\n", 'Hebisan', $message);
    },
    'func2' => function () {
        $r = mt_rand(1, 3);
        if($r === 1) $message = 'Good morning.';
        if($r === 2) $message = 'Good afternoon.';
        if($r === 3) $message = 'Good evening.';
        printf("Hey! %s %s\r\n", 'Neko', $message);
    },
);

foreach ($functions  as $key => $func) {
    $func();
}


参考: PHP: 無名関数 - Manual
(by へびさん)