Приключване на PHP (анонимни функции)

Приключване и анонимни функции в PHP - това е нормално функции, но без име. Нека разгледаме един пример за тази функция:

В този пример, има анонимна функция, но няма смисъл. Възниква въпросът - как да се използват тези функции? Следващият пример ще ви помогне да разберете това:

В този пример, ние присвоите анонимен функция променлива, тогава ние започнахме изпълнението на тази функция, закриването на синтаксиса $ ();. което е, ние името на променливата скоби добавени като функция разговор. Моля, имайте предвид, знакът $ в името на променливата, които не премахнахме.

Но този пример не е много удобен за използване, тъй като може просто ispolzovant функция.

Както се използва в практиката схема

Обикновено анонимни функции или затваряне в PHP са свикнали да ги мине като параметри на други функции. PHP има някои вградени функции, които взема като аргументи на веригата, но това ще бъде написано по-долу.

Нека да повече да усложни нашия пример.

Тук сме създали редовна функция doStuff () и преминава като параметър в нашия анонимен функция от променлива затваряне от $. и след това да го изпълните в функция doStuff () на тялото.

В този пример, doStuff () функция не е достатъчно, за проверка на променлива закриването на $ от вида. За да doStuff () функция работи правилно в параметъра трябва да съдържа анонимен функция.

is_callable () функция

Анонимни функции в PHP се осъществява чрез използване на вграден клас Затварящо устройство (PHP 5> = 5.3.0, PHP 7). Това означава, че всеки анонимен функция е обект на този клас.

Закриване клас обекти се наричат ​​също Псевдо Обратни повиквания / Callables. Принадлежността променлива на този вид данни може да се провери като се използва is_callable функция ().

Моля, имайте предвид, gettype функция определя типа на променлива закриването на $ като обект. Затова is_object функция също ще се върне към вярно. но това не е адекватен тест в този случай. Circuit трябва да се провери точно is_callable функция.

Използването на проектиране

Анонимният функция може да се направи видима променлива в обхвата майка и при използване дизайн. Ето един пример:

С помощта на ключовата дума се използва анонимен функция, можете да подадете няколко променливи, те perecheslyat в скоби, разделени със запетая.

Също така е важно да се разбере, че използването дизайн го прави видими променливи от обхвата родител, но това не е същото като променливи от глобалния обхват. Global обхват не се променя с промяната на изпълнение на функциите различна степен на гнездене.

Аргументите в анонимни функции

Анонимният функцията може да бъде предаден аргументи. Нека дам един пример за един аргумент в нашата функция.

С аргумент е много проста, анонимни функции тук не са по-различни от обичайните.

preg_replace_callback функция

Обещах на няколко вградени функции на PHP, които вземат като аргумент верига, ето една от тях: preg_replace_callback

preg_replace_callback - Извършване на търсене на регулярен израз и да се замени с помощта на обаждане-функции (затваряне).

  • $ Модела - желания шаблон може да бъде или низ или масив от низове.
  • $ Обратно повикване - нарича обратно повикване функция, която е масив от съвпадащи елементи на сюжетната линия ще бъде предоставена. Обратно повикване функция трябва да се върне низа със замяната.
  • $ Тема - низ или масив от низове за търсене и замяна на.

Този кратък синтаксис, подробности за възможностите на тази функция, можете да проверите ръководството онлайн на PHP.

Още функции вземат аргументи верига: array_filter. array_map. array_reduce. usort.

функция call_user_func

Функция call_user_func - Обадете се на потребителска функция, дадена от първия параметър. Функцията връща резултата или иначе връща.

Примери за използване call_user_func:

Пример call_user_func използва в OOP.

Закриване клас

Както съм написал, анонимни функции в PHP се изпълняват с помощта на класа на закриване. Всички анонимни функции са обекти на вградения клас ..

Също така имайте предвид, че когато се обадите на обекта като функция, наречена магически метод __invoke (от PHP5.3).