Что такое функция обратного вызова и как ее использовать с ООП

StackOverflow https://stackoverflow.com/questions/231327

Вопрос

Я хочу использовать Простой парсер HTML DOM на PHP чтобы получить изображение, заголовок, дату и описание каждой статьи на странице, полной статей.Глядя на API, я заметил, что у него есть set_callback, который устанавливает функцию обратного вызова.Однако я не уверен, что это делает и как мне это использовать?В одном из примеров он используется для вызова функции, которая удаляет некоторые вещи. Мне интересно, нужно ли вам использовать это для вызова всех функций?

Думаю, мне интересно, почему я использую это и что оно делает, поскольку я никогда раньше не сталкивался с функцией обратного вызова!

Это было полезно?

Решение

Вот базовый пример функции обратного вызова:

<?php

function thisFuncTakesACallback($callbackFunc)
{
    echo "I'm going to call $callbackFunc!<br />";
    $callbackFunc();
}

function thisFuncGetsCalled()
{
    echo "I'm a callback function!<br />";
}

thisFuncTakesACallback( 'thisFuncGetsCalled' );
?>

Вы можете вызвать функцию, имя которой хранится в переменной, например: $ variable () .

Итак, в вышеприведенном примере мы передаем имя функции thisFuncGetsCalled в thisFuncTakesACallback () , которая затем вызывает переданную функцию.

Другие советы

Функция обратного вызова будет использовать эту функцию для любых данных, возвращаемых определенным методом.

Я не уверен, как работает эта конкретная библиотека, но это может быть что-то простое:

$html = file_get_html('http://example.com');
$html->set_callback('make_bold');
$html->find('#title'); // returns an array

function make_bold($results) {
// make the first result bold
  return '<b>'.$results[0].'</b>';
}

т.е. функция " make_bold () " будет запущен на любых найденных данных. Опять же, я не уверен, как работает эта конкретная библиотека (то есть, какие методы вызовет функция обратного вызова)

Обратный вызов - это либо функция, либо метод экземпляра объекта, либо статический метод класса. В любом случае, это своего рода указатель на функцию. В некоторых языках функции имеют определенный тип. Таким образом, вы можете назначить функцию переменной. Они обычно называются функционально-ориентированными языками. Хорошим примером является Javascript.

В PHP обратный вызов может быть любым из:

$fn = 'foo'; // => foo()
$fn = array($obj, 'foo'); // => $obj->foo()
$fn = array('Foo', 'bar'); // => Foo::bar()

См. запись для is_callable .

Вы можете вызвать обратный вызов с довольно подробной функцией < код> call_user_func .

Определение

Обратный вызов/вызываемый объект — это простая функция (либо анонимная, либо именованная функция), которую мы передаем другой функции в качестве параметра функции, которая в результате возвращает переданную функцию.

Пример

function iWillReturnCallback($callBackHere){
    return $callBackHere;
}

function iAmCallBack(){
    echo "I am returned with the help of another function";
}

iWillReturnCallback(iAmCallBack());

//--Output -> I am returned with the help of another function

Не путайте

В PHP есть некоторые функции по умолчанию, которые принимают имя функции обратного вызова в виде строки в своем параметре, чтобы избежать конфликта между именем константы и именем функции.Так что не запутайтесь в подобных вещах.

С помощью PHP 5.3 теперь вы можете сделать это:

function doIt($callback) { $callback(); }

doIt(function() {
    // this will be done
});

Наконец, хороший способ сделать это. Отличное дополнение к PHP , потому что обратные вызовы потрясающие.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top