PHP wird Schließungen in 5.3 nativ unterstützen. Ein Verschluss ist gut, wenn Sie eine lokale Funktion wünschen, die nur für einen kleinen, spezifischen Zweck verwendet wird. Der RFC für Verschlüsse gibt ein gutes Beispiel:
function replace_spaces ($text) {
$replacement = function ($matches) {
return str_replace ($matches[1], ' ', ' ').' ';
};
return preg_replace_callback ('/( +) /', $replacement, $text);
}
Auf diese Weise können Sie die replacement
Funktion lokal innerhalb definieren replace_spaces()
, sodass dies nicht der Fall ist :
1) Überladen des globalen Namespace
2 ) Lassen Sie die Leute drei Jahre später fragen, warum eine global definierte Funktion nur innerhalb einer anderen Funktion verwendet wird
Es hält die Dinge organisiert. Beachten Sie, dass die Funktion selbst keinen Namen hat, sondern lediglich als Referenz definiert und zugewiesen wird $replacement
.
Aber denken Sie daran, Sie müssen auf PHP 5.3 warten :)
Sie können auch mit dem Schlüsselwort auf Variablen außerhalb des Gültigkeitsbereichs zugreifen use
. Betrachten Sie dieses Beispiel.
$multiplier = 3;
$numbers = array(1,2,3,4);
array_walk($numbers, function($number) use($multiplier){
echo $number * $multiplier;
});
Eine ausgezeichnete Erklärung wird hier gegeben. Was sind PHP-Lambdas und Verschlüsse?