PHP: анонимная функция в ассоциативном массиве - PullRequest
2 голосов
/ 09 августа 2011

Возможно ли? Что-то вроде (что не работает):

$prototype = array(
    'ext' => function ($args)
    {
        $ext = NULL;
        if (in_array(func_get_arg(0), array('js', 'css')))
            return $ext;
        else
            return 'js';
    },
);

Ответы [ 2 ]

4 голосов
/ 09 августа 2011

Это, безусловно,:

<?php
$array = array(
        'func' => function($a) {
                return $a + 2;
        }
);
echo $array['func'](3);
?>

Это даст вам 5 =)!

3 голосов
/ 09 августа 2011

Да. Единственным ограничением является то, что вы не можете привести его к объекту.

<?php
    $foo = array(
        'bar' => function($text)
        {
            echo $text;
        }
    );
    $foo['bar']('test'); //prints "test"

    $obj = (object)$foo;
    $obj->bar('test'); //Fatal error: Call to undefined method stdClass::bar() in /code/REGnPf on line 11
?>
...