2

好的,我正在考虑使用create_function我需要做的事情,但我看不到用它定义默认参数值的方法。这可能吗?如果是这样,将参数输入到create_functionphp 函数中的最佳方法是什么?也许使用addslashes

好吧,例如,我有一个这样的功能:

function testing($param1 = 'blah', $param2 = array())
{
    if($param1 == 'blah')
        return $param1;
    else
    {
        $notblah = '';
        if (count($param2) >= 1)
        {
            foreach($param2 as $param)
                $notblah .= $param;

            return $notblah;
        }
        else
            return 'empty';
    }
}

好的,那么我将如何使用create_function来做同样的事情,添加参数及其默认值?

问题是,参数来自 TEXT 文件,以及函数本身。因此,想知道这种使用的最佳方法create_function以及应该如何解析字符串。

谢谢 :)

4

3 回答 3

2

create_function考虑以这种方式创建的函数:

$func = create_function('$who', 'echo "Hello, $who!";');

你可以这样称呼它:

$func('World');

你会得到:

Hello, World!


现在,有了参数的默认值,代码可能如下所示:

$func = create_function('$who="World"', 'echo "Hello, $who!";');

注意:我只在传递给 create_function 的第一个参数中添加了参数的默认值。

然后,调用新函数:

$func();

我仍然得到:

Hello, World!

即已使用参数的默认值。


因此,参数的默认值create_function就像其他函数一样工作:您只需将默认值放在参数列表中。

在那之后,关于如何创建包含参数及其值的字符串......我想几个字符串连接,不要忘记转义应该转义的内容。

于 2010-05-01T08:47:43.300 回答
0

你想创建一个匿名函数吗?create_function用于创建匿名函数。否则,您需要正常创建函数,例如:

function name($parms)
{
   // your code here
}

如果你想使用create_function,这里是原型:

$newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
echo "New anonymous function: $newfunc\n";
echo $newfunc(2, M_E) . "\n";
// outputs
// New anonymous function: lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599
于 2010-05-01T08:47:31.750 回答
0

我遇到了同样的问题,试图将数组传递给创建的回调函数...我想我会创建一个临时变量...这很丑但我最好用斜杠折磨自己,我的代码是已经像现在这样神秘了。

所以,为了说明:

global $tmp_someArray;
$tmp_someArray = $someArray;
$myCallback = create_function(
    '$arg1',
    '
          global $tmp_someArray;
          // do stuff with $tmp_someArray and $arg1....
          return($something);
    '
);
于 2011-05-14T22:02:05.410 回答