Php - понимание create_function() - передача простой переменной

В первый раз я пытаюсь использовать динамический create_functionи до сих пор не так много успехов:-)

Моя функция заключается в следующем:

 function o99_brsa_custom_widgets() {
        global $wp_meta_boxes;
        global $o99_brsa_options;

        for($i=0; $i> count($o99_brsa_options[content]); $i++) {

            $widgt_id = 'o99_dashboard_widget_dyn' . $i;
            $widgt_name = 'obmek99 widget name' . $i;
            $out = $o99_brsa_options[content][$i];
            $f = create_function(' $out ',' global $out; echo $out;');
            do_the_widgets($widgt_id, $widgt_name, $f);
         }
    } 

do_the_widgets() действие принимает только прямое эхо и печатает содержимое виджета.

$o99_brsa_options[content] это проверенный массив с $i элементы (каждый контент) .

Странно то, что $i работает над $widgt_id а также $widgt_name но на create_function() Я получаю одинаковое значение во всех виджетах. (echo $out)

Кажется, я не знаю, как передать простую переменную в новую функцию (я использую global внутри create_function(), но пока это мало помогает.

Итак, в чем моя ошибка / недоразумение / неправильное использование сейчас:-)??

1 ответ

Решение

create_function был во время stone age, когда kaᵠ использовал ручку и бумагу для написания приложений, когда PeeHaa埽 получил пиво, потому что он написал hello would, Мир лучше сейчас, пожалуйста, используйте closures

$f = function ($out) {
    echo $out;
};

$f("Welcome");

Вы бы поблагодарили меня однажды, но вы можете использовать только create_function если ты Gordon (Машина из прошлого, посланная сюда, чтобы мучить нас), он написал это

$fn = create_function(
    '$x',
    'return $x; } $foo = 42; function foo($int) { return $int; '
);

Посмотреть демо

Другие вопросы по тегам