Anonyme Funktion Rückgabewert

Update: Beginnend mit PHP7, es ist jetzt möglich, eine anonyme Funktion zu dereferenzieren verwenden Sie die syntax:

$array[] = [
    'new' => (function()
    {
        ...
        return mt_rand();
    })(),

    'or' => getClosure()()
]

Original-Beitrag: ich habe mir vor kurzem das Experimentieren mit einigen Dingen, und fragte sich, ob es irgendeinen Weg zu benutzen, den Rückgabewert einer anonymen Funktion

Können sagen, ich hatte eine for-Schleife, die aus einem array mit jedem Wert des Arrays hatte, um eine Datenbank nennen, etwas, was ich gerne tun würde, ist:

for($i = 0; $i != 10; $i++)
{
    $array[] = [
        'new' => function(){
            //some proccesing here maybe
            //lets use mt_rand for this example.
            return mt_rand();
        },

        'old' => function(){
            return mt_rand();
        }
    ];
}

oder vielleicht

echo function(){
     //again, we'll just use mt_rand
     return mt_rand();
};

Diese beide geben ein closure Klasse. Ist es irgendwie tatsächlich übergeben Sie den Rückgabewert zurück an den array-oder echo, für die Beispiele oben?

Update: ich habe festgestellt haben, ist dies nicht möglich, so feature-request können hier gefunden werden: http://bugs.php.net/bug.php?id=64608

  • Brauchen Sie wirklich eine anonyme Funktion? Klingt wie Sie brauchen eine regelmäßige und nenne es einfach innerhalb der Schleife
  • Hängt davon ab, welche php-version du hast... ich glaube, dass php 5.4 in der Lage sein könnte, dies zu tun, aber Server, auf denen ältere Pakete (z.B. Debian Squeeze ich weiß, läuft php 5.3) nicht.
  • meine Beispiele wurden getestet auf PHP 5.4.13
  • Anonyme Funktionen stehen ab PHP 5.3
  • Ich habe festgestellt, dieses ist nicht möglich, also feature-request können hier gefunden werden: bugs.php.net/bug.php?id=64608
  • Sie definieren möchten, und sofort führen Sie eine anonyme Funktion. Während das ticket, das Sie gefunden, die besagt, dass dies derzeit unmöglich ist, Frage ich mich, ob es gibt viele Gelegenheiten diese zu verwenden. Die Art und Weise, Sie formuliert Ihre Frage suggerieren, dass es unmöglich ist - was nicht der Fall ist. Ihre Schleife füllt ein array mit einer Anzahl von anonymen Funktionen. Warum sollten die auf einmal ausgeführt? Vielleicht könnte es eine sehr gute Idee nur ausführen, wenn nötig.
  • Sie müssen ausgeführt werden, gleichzeitig zu arbeiten mit einem template-system.

InformationsquelleAutor Jordan Doyle | 2013-04-07
Schreibe einen Kommentar