2016-03-21 8 views
2

Die folgende Methode funktioniert nicht.Wie übergebe ich einen Wert an eine anonyme Funktion?

$dir = '/web/source/htm/arc.php' 

// no routing 
$app->get('/', function() { 
    return ob(__DIR__ . $dir); 
}); 

In JavaScript $ dir (natürlich in JS-Syntax) würde durch die Funktion zugänglich sein, aber in PHP ist es nicht zu funktionieren scheint.

Ich habe auch versucht

// no routing 
$app->get('/', function($dir) { 
    return ob(__DIR__ . $dir); 
}); 

Antwort

1

Anonyme Funktionen sind auch als Verschlüsse in PHP bekannt. Dies ähnelt JavaScript-Schließungen, außer dass die eingeschlossenen Variablen nicht automatisch erstellt werden.

Dies spart Speicher, indem nicht implizit Variablen importiert werden, die Sie nicht benötigen.

Sie müssen diese Variablen explizit mit dem Schlüsselwort use importieren.

$app->get('/', function() use ($dir) { 
    return ob(__DIR__ . $dir); 
}); 

Siehe hier:

http://php.net/manual/en/functions.anonymous.php

4

In PHP Variablen außerhalb einer Funktion sind innen nicht zugänglich sind (mit Ausnahme von superglobal Variablen).

Um Zugriff auf Variablen außerhalb des Bereichs einer Funktion zu erhalten, müssen Sie der Funktion mitteilen, dass sie darauf zugreifen soll. Das geschieht mit dem use Stichwort:

$dir = '/web/source/htm/arc.php' 

// no routing 
$app->get('/', function() use ($dir) { 
    return ob(__DIR__ . $dir); 
});