Курс — «Программирование на PHP8 для начинающих» — #9 Функции в PHP: Анонимные функции и замыкания
Здравствуйте, дорогие друзья.
Анонимные функции и замыкания являются мощными инструментами в PHP, которые позволяют создавать функции без имени и использовать их в качестве значений. Это особенно полезно для создания обратных вызовов (callbacks) и работы с функциями высшего порядка.
Анонимные функции
Анонимные функции, также известные как лямбда-функции, позволяют создавать функции без имени. Они определяются с помощью ключевого слова function
и могут быть присвоены переменной или переданы в качестве аргумента другой функции.
1 2 3 4 5 6 7 |
<?php $greet = function($name) { echo "Hello, " . $name . "!"; }; $greet("Alice"); // Вывод: Hello, Alice! ?> |
Замыкания
Замыкания — это анонимные функции, которые могут захватывать и использовать переменные из области видимости, в которой они были созданы. Это позволяет анонимным функциям иметь доступ к внешним переменным.
1 2 3 4 5 6 7 8 |
<?php $message = "Hello, "; $greet = function($name) use ($message) { echo $message . $name . "!"; }; $greet("Alice"); // Вывод: Hello, Alice! ?> |
Пример использования анонимных функций и замыканий:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php // Анонимная функция $add = function($a, $b) { return $a + $b; }; $result = $add(3, 5); echo "Сумма: " . $result . "\n"; // Вывод: Сумма: 8 // Замыкание $factor = 2; $multiply = function($number) use ($factor) { return $number * $factor; }; $result = $multiply(4); echo "Произведение: " . $result . "\n"; // Вывод: Произведение: 8 // Использование анонимной функции в качестве callback $numbers = [1, 2, 3, 4, 5]; $squaredNumbers = array_map(function($number) { return $number * $number; }, $numbers); print_r($squaredNumbers); // Вывод: Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 ) ?> |
Анонимные функции и замыкания в контексте
Анонимные функции и замыкания часто используются в контексте обратных вызовов и функций высшего порядка, таких как array_map
, array_filter
и usort
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php // Использование анонимной функции с array_filter $numbers = [1, 2, 3, 4, 5]; $evenNumbers = array_filter($numbers, function($number) { return $number % 2 == 0; }); print_r($evenNumbers); // Вывод: Array ( [1] => 2 [3] => 4 ) // Использование анонимной функции с usort $fruits = ["apple", "orange", "banana", "pear"]; usort($fruits, function($a, $b) { return strlen($a) - strlen($b); }); print_r($fruits); // Вывод: Array ( [0] => pear [1] => apple [2] => orange [3] => banana ) ?> |
Анонимные функции и замыкания предоставляют гибкость и мощь для создания динамичного и повторно используемого кода. Они позволяют писать более компактный и читаемый код, особенно когда речь идет о работе с функциями высшего порядка и обратными вызовами.
На этом все. Всем хорошего дня!
Цикл статей по курсу — «Программирование на PHP8 для начинающих».