fork download
  1. <?php
  2.  
  3. $pituh1 = 'Петя';
  4. $pituh2 = 'Вася';
  5. $pituh3 = 'Коля';
  6.  
  7.  
  8. $closure = function() use($pituh1, &$pituh2) {
  9. echo 'Внутри замыкания:', PHP_EOL;
  10. echo $pituh1, PHP_EOL; // Выведет 'Петя', его захватили
  11. echo $pituh2, PHP_EOL; // Выведет 'Вася', его захватили
  12. echo $pituh3, PHP_EOL; // Notice: Undefined variable — его не захватывали
  13.  
  14. $pituh1 = 'Ко-ко'; // Не изменит глобальную пельменную, её захватили по значению
  15. // Изменится только локальная копия
  16. $pituh2 = 'Куд-кудах'; // Изменит глобальную пельменную, её захватили по ссылке
  17. };
  18.  
  19. $closure();
  20.  
  21. echo 'После выхода:', PHP_EOL;
  22. echo $pituh1, PHP_EOL; // Выведет 'Петя', его не смогли изменить
  23. echo $pituh2, PHP_EOL; // Выведет 'Куд-кудах', его захватили по ссылке и изменили
  24. echo $pituh3, PHP_EOL; // Выведет 'Коля'
  25.  
Success #stdin #stdout #stderr 0.02s 25900KB
stdin
Standard input is empty
stdout
Внутри замыкания:
Петя
Вася

После выхода:
Петя
Куд-кудах
Коля
stderr
PHP Notice:  Undefined variable: pituh3 in /home/Rxyc0d/prog.php on line 12