Frage

im Grunde, was ich möchte wissen, ist, für den zweiten Parameter in der create_function Funktion, ist es trotzdem eine Zeichenfolge zu übergeben, ohne ein Semikolon? oder es wird nicht funktionieren.

Beispiel:

taken from php.net
create_function('$a,$b', 'return "CRCs: " . crc32($a) . " , ".crc32(b);'),

Beachten Sie, dass ein Semikolon in der Zeichenfolge ist. Gibt es eine Möglichkeit, jemand eine Funktion ohne ein Semikolon eingeben kann, die noch ausgeführt werden / auswerten?

War es hilfreich?

Lösung

Nein ist es nicht möglich. PHP ist Semikolon empfindlich ist, dass Sie es verwenden, müssen alle Anweisungen vor rechten Klammern zu beenden. Ich habe sogar versucht reguläre Funktion wie folgt aus:

function f() {
  return 1
}

und es aufgespießt einen Syntaxfehler aus, im Gegensatz zu JavaScript.

Andere Tipps

Mit create_function () Sie eine anonyme Funktion sind zu schaffen. Der zweite Parameter ist ein String, der Code der Funktion (wie jede andere Funktion, die Sie schreiben würde) ist. Es muss nicht in einem Semikolon enden, zum Beispiel:

$coolfunction = create_function('$thing', 'if ($thing > 0) {return "Yes"; } else { return "no!"; }');

echo $coolfunction(1) . ' and ' . $coolfunction(-1);

Ends in einem '}' und druckt: Ja und nein

Sie sollten sanieren alle Eingaben vor der Verwendung. Ich schlage vor, dass Sie in der Benutzereingabe für das Semikolon aussehen, wenn sie fehlt, hängen Sie es.

Wenn der Benutzer etwas eingeben können hier immer noch ein Problem haben, wenn er einen ungültigen Funktionsnamen eingibt oder einfach nur Müll.

Sie können Validieren mit preg_match () (obwohl ich bin kein Experte auf preg so ich dir jemand anderes Hilfe da draußen lassen wird).

Erstens, warum brauchen Sie das? Das ist eine wirklich schmutzige Art und Weise, eine Funktion zu erstellen. Hoffnung, weil Sie eine Schnittstelle machen wollen, wo die Menschen direkt eine Funktion erstellen können (und dies auch nur für Dich sein wird, oder es wird ein großes Sicherheitsproblem sein). Ich weiß nicht wirklich bekommen, wie Sie wollen, dass verwenden.

Wie auch immer, für Sie in Frage, müssen Sie sich nicht kümmern, ob es funktioniert oder nicht. Ich meine, nur testen, ob es funktioniert, wenn nicht nur selbst ein Semikolon setzen. Es ist nur ein einfacher Test an einer Schnur.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top