Php 是否使用默认参数值创建函数?

Php 是否使用默认参数值创建函数?,php,parameters,create-function,Php,Parameters,Create Function,好的,我正在研究如何使用create_函数来完成我需要做的事情,但我看不到用它定义默认参数值的方法。这可能吗?如果是这样,在php中将参数输入到create_函数函数中的最佳方法是什么?可能使用addslashes 举个例子,我有一个这样的函数: function testing($param1 = 'blah', $param2 = array()) { if($param1 == 'blah') return $param1; else {

好的,我正在研究如何使用
create_函数
来完成我需要做的事情,但我看不到用它定义默认参数值的方法。这可能吗?如果是这样,在php中将参数输入到
create_函数
函数中的最佳方法是什么?可能使用
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
来做同样的事情,添加参数及其默认值呢

问题是,参数来自文本文件,也来自函数本身。 因此,想知道使用
create\u函数的最佳方法,以及应该如何准确地解析字符串


谢谢:)

是否要创建匿名函数?
create_函数
用于创建匿名函数。否则,您通常需要创建如下函数:

function name($parms)
{
   // your code here
}
如果要使用
create_函数
,以下是原型:

$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

考虑使用
create\u函数创建的函数
如下:

$func = create_function('$who', 'echo "Hello, $who!";');
你可以这样称呼它:

$func('World');
$func = create_function('$who="World"', 'echo "Hello, $who!";');
您将得到:

Hello, World!

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

$func('World');
$func = create_function('$who="World"', 'echo "Hello, $who!";');
注意:我只在传递给create_函数的第一个参数中添加了参数的默认值

然后,调用新函数:

$func();
我仍然得到:

Hello, World!
i、 e.已使用参数的默认值


因此,参数的默认值与
create_函数
一起工作,就像其他函数一样:您只需将默认值放入参数列表中


之后,关于如何创建包含参数及其值的字符串。。。我想,在不忘记转义应该转义的内容的情况下,进行两次字符串连接。

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

因此,为了说明:

global $tmp_someArray;
$tmp_someArray = $someArray;
$myCallback = create_function(
    '$arg1',
    '
          global $tmp_someArray;
          // do stuff with $tmp_someArray and $arg1....
          return($something);
    '
);

好的,谢谢,这是一个文本文件,所以参数可能是这样的:
$who='World'
,这在那里也可以,还是有一个函数可以用单引号代替双引号?或者我应该为此使用
addslashes
吗?如果您将其放入
$params
变量中,您可以使用该
$params
变量作为
创建函数的第一个参数:它的内容正是应该在那里使用的内容。非常感谢,所以我不需要转义参数中的任何字符而不是右键?最后一件事,对不起,所以我不需要转义参数中的任何字符而不是右键?只要您的文件包含一部分有效的参数PHP代码,我认为您不必转义任何字符。您是否已经在使用php5.3?如果是这样,请看一看-您可能还对策略模式感兴趣