PHP автоматично підтримуватиме закриття в 5.3. Закриття - це добре, коли вам потрібна локальна функція, яка використовується лише для якихось невеликих, конкретних цілей. RFC для закриття дає хороший приклад:
function replace_spaces ($text) {
$replacement = function ($matches) {
return str_replace ($matches[1], ' ', ' ').' ';
};
return preg_replace_callback ('/( +) /', $replacement, $text);
}
Це дозволяє вам визначити replacement
функцію локально всередині replace_spaces()
, щоб вона не була такою:
1) захаращення глобального простору імен;
2 ) змусити людей за три роки дивуватися, чому існує функція, визначена глобально, яка використовується лише всередині однієї іншої функції
Це тримає речі впорядковано. Зверніть увагу, як сама функція не має назви, вона просто визначається і призначається як посилання на $replacement
.
Але пам’ятайте, вам доведеться почекати PHP 5.3 :)
Ви також можете отримати доступ до змінних, які не входять до сфери дії, до закриття, використовуючи ключове слово use
. Розглянемо цей приклад.
$multiplier = 3;
$numbers = array(1,2,3,4);
array_walk($numbers, function($number) use($multiplier){
echo $number * $multiplier;
});
Чудове пояснення дано тут Що таке php лямбди та закриття