I have few helpers - I want to redclare each helper's method as a lambda anonymous function.
I'm trying to do it by getting the helpers methods, and then doing an eval function, but it wont work, im getting parse error..
My current code:
            foreach($this->helpers as $helper)
            {
                include(master_path . 'helpers/'.$helper.'Helper.php');
                $helperClass = new applicationHelper();
                $meth开发者_开发问答ods = get_class_methods($helperClass);
                foreach($methods as $method )
                {
                    eval ( "\$$method = function (\$text) {
                        \$helperClass->$method(\$text);
                    }");
                }
             }
Due to efficiency fears - I'd like a better solution if you know it, thanks! Thanks Guys!
That should work:
foreach($methods as $method )
{
    $$method = function($text) use ($method, $helperClass) {
        return $helperClass->$method($text);
    }
}
But still dont know why are you doing that.
EDIT PHP 5.3.x needed -> look here Anonymous funcions
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);
        };
    }
}
That get's rid of the slow eval.
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论