Функції зворотного дзвінка (callback-функції)
Callback-функції можуть бути позначені оголошенням типу callable
Деякі функції, такі як call_user_func() або usort(), приймають певні користувачем callback-функції як параметр. Callback-функції може бути як простими функціями, і методами об'єктів, включаючи статичні методи класів.
Передача
У PHP функції передаються на ім'я у вигляді рядка. Можна використовувати будь-які вбудовані або створені користувачем функції, за винятком конструкцій мови, таких як: array() echo empty() eval() exit() isset() list() print або unset()
Метод створеного об'єкта (object) передається як масив, що містить об'єкт за індексом 0 та ім'я методу за індексом 1. Доступ до закритих та захищених методів дозволено зсередини класу.
Статичні методи класу також можуть бути викликані без створення екземпляра об'єкта класу шляхом передачі імені класу замість об'єкта в елементі масиву з індексом 0 або виконання 'ClassName::methodName'
Крім звичайних функцій користувача, в якості callback-функції можна передавати анонімні функції і стрілочні функції
Зауваження :
Починаючи з PHP 8.1.0, у Callback-функцій як об'єктів першого класу та сама семантика, що й у цього методу.
Як правило, будь-який об'єкт, що реалізує __invoke(), також може бути передано до параметра callback.
Приклад #1 Приклад callback-функції
Loading...
Приклад #2 Приклад callback-функції з використанням замикання
Loading...
Результат виконання наведеного прикладу:
2 4 6 8 10
Зауваження :
Callback-функції, зареєстровані такими функціями як call_user_func() і call_user_func_array(), не будуть викликані за наявності не спійманого виключення, кинутого у попередній callback-функції.