Генерация лямбда-функции из eval () - PullRequest
0 голосов
/ 31 января 2011

У меня мало помощников - я хочу переименовать метод каждого помощника как лямбда-анонимную функцию.

Я пытаюсь сделать это, используя методы helpers, а затем выполняю функцию eval, но это не сработает, я получаю ошибку разбора ..

Мой текущий код:

            foreach($this->helpers as $helper)
            {
                include(master_path . 'helpers/'.$helper.'Helper.php');

                $helperClass = new applicationHelper();
                $methods = get_class_methods($helperClass);
                foreach($methods as $method )
                {

                    eval ( "\$$method = function (\$text) {
                        \$helperClass->$method(\$text);
                    }");

                }
             }

Из-за опасений за эффективность - я бы хотел лучшего решения, если вы это знаете, спасибо! Спасибо, ребята!

Ответы [ 2 ]

2 голосов
/ 31 января 2011

Это должно работать:

foreach($methods as $method )
{
    $$method = function($text) use ($method, $helperClass) {
        return $helperClass->$method($text);
    }
}

Но все еще не знаю, зачем ты это делаешь.

EDIT Требуется PHP 5.3.x -> смотрите здесь анонимные функции

0 голосов
/ 31 января 2011
foreach ($this->helpers as $helper) {
    include(master_path . 'helpers/'.$helper.'Helper.php');

    $helperClass = new applicationHelper();
    foreach (get_class_methods($helperClass) as $method) {
        $$method = function($text) use($helperClass, $method) {
            $helperClass->$method($text);
        };
    }
}

Это избавляет от медленных eval.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...