«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу эффективно использовать обратные вызовы в PHP?

Как я могу эффективно использовать обратные вызовы в PHP?

Опубликовано 9 ноября 2024 г.
Просматривать:796

How Can I Use Callbacks Effectively in PHP?

Реализация обратных вызовов в PHP

Термин «обратный вызов» в PHP охватывает как строки, так и массивы, которые действуют как указатели на функции. В PHP 4 появился следующий синтаксис:

  • $cb1 = 'someGlobalFunction';
  • $cb2 = ['ClassName', 'someStaticMethod'];
  • $cb3 = [$object, 'somePublicMethod'];

Хотя в PHP 5.2.3 введен вызываемый синтаксис, строки, содержащие такой синтаксис, не могут быть вызваны напрямую. Устаревший синтаксис для PHP 4 включает:

  • $cb3 = array(&$object, 'somePublicMethod');

Следующий фрагмент кода демонстрирует безопасное использование вызываемых значений. :

if (is_callable($cb2)) {
    $returnValue = call_user_func($cb2, $arg1, $arg2);
}

Современные версии PHP поддерживают вызов первых трех приведенных выше форматов напрямую как $cb(). Кроме того, call_user_func и call_user_func_array поддерживают все представленные форматы.

Примечания и предостережения:

  • Функции/классы в пространстве имен требуют полностью определенных имен, например ['Vendor\Package\Foo', 'method'].
  • call_user_func не поддерживает передачу необъектов по ссылке. Используйте call_user_func_array или $cb(); в более поздних версиях PHP.
  • Объекты с методом __invoke() (включая анонимные функции) могут использоваться в качестве обратных вызовов, но обычно не связаны с традиционным термином «обратный вызов».
  • Устаревшая функция create_function () создает глобальную функцию и возвращает ее имя. Вместо этого используйте анонимные функции.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3