Frage

Ok, ich bin auf der Suche in mit create_function für das, was ich tun muß, und ich sehe keinen Weg, damit Standard-Parameterwerte zu definieren. Ist das möglich? Wenn ja, was wäre der beste Ansatz zur Eingabe der params in die create_function Funktion in php? Vielleicht addslashes mit?

Nun, zum Beispiel, habe ich eine Funktion wie folgt:

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

Ok, so wie würde ich create_function das Gleiche zu tun, und fügte hinzu, die Parameter und ihre Standardwerte?

Die Sache ist, kommen die Parameter aus einer Textdatei, sowie die Funktion selbst. Also, fragt am besten Ansatz für diese Verwendung create_function und wie genau sollte die Zeichenfolge analysiert werden.

Danke:)

War es hilfreich?

Lösung

Unter Berücksichtigung einer Funktion mit create_function auf diese Weise erstellt:

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

Sie können es so nennen:

$func('World');

Und Sie erhalten:

Hello, World!


Nun, einen Standardwert für einen Parameter aufweist, könnte der Code wie folgt aussehen:

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

Hinweis: Ich habe nur den Standardwert für den Parameter hinzugefügt, in dem ersten Argumente create_function geben

.

Und dann die neue Funktion aufrufen:

$func();

ich noch bekommen:

Hello, World!

d. Der Standardwert für den Parameter verwendet worden ist.


Also, Standardwerte für die Parameter arbeiten mit create_function wie sie für andere Funktionen zu tun: Sie müssen nur in der Liste der Parameter den Standardwert setzen

.

Danach, wie die Zeichenfolge erstellen, um die Parameter und deren Werte enthalten ... Ein paar String-Verkettungen, nehme ich an, ohne zu vergessen, zu entkommen, was entgangen sein sollte.

Andere Tipps

Haben Sie eine anonyme Funktion erstellen? Die create_function wird verwendet, um die anonymen Funktionen zu erstellen. Andernfalls müssen Sie Funktion erstellen normalerweise wie:

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

Wenn Sie die create_function verwenden möchten, hier ist der Prototyp:

$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

Ich bin mit dem gleichen Problem, versuche, ein Array an eine Callback-Funktion erstellt passieren ... Ich denke, ich werde eine temporäre Variable erstellen ... Es ist hässlich, aber ich habe besser mit Schrägstrichen quäle mich dann, mein Code ist schon kryptisch genug so, wie es jetzt ist.

Also, um zu veranschaulichen:

global $tmp_someArray;
$tmp_someArray = $someArray;
$myCallback = create_function(
    '$arg1',
    '
          global $tmp_someArray;
          // do stuff with $tmp_someArray and $arg1....
          return($something);
    '
);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top