create_function mit Standard-Parameterwerte?
-
02-10-2019 - |
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:)
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);
'
);