質問

わかりました、私は使用を検討しています create_function 私がしなければならないことのために、そしてそれを使用してデフォルトのパラメーター値を定義する方法がわかりません。これは可能ですか?もしそうなら、パラマをに入力するための最良のアプローチは何ですか create_function PHPの機能?おそらく使用 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_function 文字列を正確に解析する方法。

ありがとう :)

役に立ちましたか?

解決

で作成された関数を考慮します 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!

IEパラメーターのデフォルト値が使用されています。


したがって、パラメーターのデフォルト値は機能します create_function 他の関数の場合と同様に、パラメーターのリストにデフォルト値を配置する必要があります。

その後、パラメーターとその値を含む文字列を作成する方法について...いくつかの文字列の連結は、逃げるべきものを逃れるのを忘れずに、私は思う。

他のヒント

匿名関数を作成しますか? 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

私は同じ問題を抱えており、作成されたコールバック関数に配列を渡そうとしています...私は一時的な変数を作成すると思います...それは醜いですが、私はスラッシュで自分自身を拷問する方が良いと思います、私のコードは私のコードですすでに今のように十分に不可解です。

だから、説明するために:

global $tmp_someArray;
$tmp_someArray = $someArray;
$myCallback = create_function(
    '$arg1',
    '
          global $tmp_someArray;
          // do stuff with $tmp_someArray and $arg1....
          return($something);
    '
);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top