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

Я хочу использовать простой парсер PHP 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 .

Defination

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

пример

 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 , потому что обратные вызовы являются удивительными.