varsayılan parametre değerleri ile create_function?

3 Cevap php

Tamam, ben create_function yapmam gerekenler için kullanarak içine arıyorum, ve ben onunla varsayılan parametre değerleri tanımlamak için bir yol görmüyorum. Bu mümkün mü? Eğer öyleyse, ne php create_function fonksiyonuna params girmek için en iyi yaklaşım olacaktır? Belki de kullanarak addslashes?

Peki, örneğin, ben bu yüzden gibi bir işlevi var:

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';
    }
}

Tamam, bu yüzden nasıl parametreleri ve varsayılan değerler ekleyerek, create_function aynı şeyi yapmak için kullanmak istiyorsunuz?

The thing is, the parameters are coming from a TEXT file, as well as the function itself. So, wondering on the best approach for this using create_function and how exactly the string should be parsed.

Teşekkürler :)

3 Cevap

create_function bu şekilde oluşturulan bir işlevi göz önüne alındığında:

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

Böyle diyebilirsin:

$func('World');

Ve alırsınız:

Hello, World!


Now, having a default value for a parameter, the code could look like this :

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

Not: Ben sadece create_function geçirilen ilk bağımsız değişken, parametre için varsayılan değer katma.

Ve sonra, yeni bir fonksiyon çağırarak:

$func();

Ben hala alıyorum:

Hello, World!

yani parametresi için varsayılan değer kullanılır olmuştur.


So, default values for parameters work with create_function just like they do for other functions : you just have to put the default value in the list of parameters.

Bundan sonra, parametreleri ve değerlerini içeren bir dize oluşturmak için nasıl ... dize concatenations bir çift, ben kaçtı ne olması gerektiğini kaçmak için unutmadan, varsayalım.

Eğer bir anonim işlev oluşturmak istiyor musunuz? create_function Anonim işlevler oluşturmak için kullanılır. Aksi takdirde işlevi oluşturmak için gereken normal istiyorum:

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

Eğer create_function kullanmak istiyorsanız, burada prototip:

$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

Ben oluşturulan geri çağırma işlevine bir dizi geçmek için çalışıyor, aynı sorunu yaşıyorum ... Ben çok çirkin ... Ben geçici bir değişken oluşturmak düşünüyorum ama bölü ile kendimi işkence sonra yapmak iyi olması, benim kodu yol zaten yeterince şifreli şimdi.

Bu nedenle, göstermek için:

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