将类函数转换为lambda函数

时间:2011-01-29 10:07:59

标签: php

我想尝试这样的事情:

class helper {
   .. some class variables ..

   public function somehelper ($somevar) 
   {
            .. some action ..
   }
}

到 - $somehelper('somevar!')

我希望它是一个lambda函数,而不是我声明一个新的lambda函数。我希望自动创建代码。我想通过一个核心类自动创建这个lambda函数,该核心类将创建每个辅助函数 - 带函数名称的lambda函数。我不想指定它。我有一个模板文件,一个类助手的实例。 <a href..><?= $makeSeo($url); ?></a>这将导致 - 帮助类中的公共函数makeSeo($url)。 autmatically。

先谢谢了!

2 个答案:

答案 0 :(得分:2)

听起来你想要一个给出方法名称的东西来创建一个lambda?假设你的'Helper'类方法是静态的,像这样的东西就可以了

function makeHelper($fn)
{
   //note use of PHP5.3 closure syntax
   $helper = function($param) use ($fn) {
       return Helper::$fn($param);
   };

   return $helper;
}

//create a new lambda
$foo=makeHelper('somehelper');

//call it...
$foo('Hello world);

答案 1 :(得分:1)

我想你是说你希望变量$somehelper从类的上下文之外调用helper::somehelper

$somehelper = function($somevar) {
    return helper::somehelper($somevar);
});

这假设somehelper是一个静态函数(即应该标记为public static function。如果不是,你将不得不提供更多关于类的位置的信息实例来自。