Pregunta

Quiero usar el php simple HTML DOM parser para tomar la imagen, título, fecha y descripción de cada artículo en una página llena de artículos. Al mirar la API, me doy cuenta de que tiene un set_callback que establece una función de devolución de llamada. Sin embargo, no estoy seguro de qué hace esto o cómo lo usaría. En uno de los ejemplos se usa para llamar a una función que elimina algunas cosas, ¿me pregunto si tiene que usar esto para llamar a todas las funciones?

Supongo que me pregunto por qué uso esto, y qué hace, ya que nunca antes había encontrado una función de devolución de llamada.

¿Fue útil?

Solución

Aquí hay un ejemplo básico de función de devolución de llamada:

<?php

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

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

thisFuncTakesACallback( 'thisFuncGetsCalled' );
?>

Puede llamar a una función que tenga su nombre almacenado en una variable como esta: $ variable () .

Entonces, en el ejemplo anterior, pasamos el nombre de la función thisFuncGetsCalled a thisFuncTakesACallback () que luego llama a la función pasada.

Otros consejos

Una función de devolución de llamada usará esa función en cualquier dato que sea devuelto por un método en particular.

No estoy seguro de cómo funciona esta biblioteca en particular, pero podría ser algo tan simple como:

$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>';
}

es decir, la función " make_bold () " se ejecutará en cualquier dato encontrado. Nuevamente, no estoy seguro de cómo funciona esta biblioteca en particular (es decir, a qué métodos se llamará la función de devolución de llamada)

Una devolución de llamada es una función, un método de instancia de objeto o un método estático en una clase. De cualquier manera, es una especie de puntero a función. En algunos idiomas, las funciones son un tipo específico. Así que podrías asignar una función a una variable. Estos son generalmente llamados lenguajes orientados a funciones. Un buen ejemplo es Javascript.

En PHP, una devolución de llamada puede ser cualquiera de:

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

Consulte la entrada manual para is_callable .

Puede invocar una devolución de llamada con la función bastante detallada < código> call_user_func .

Definición

Una devolución de llamada / invocable es una función simple (ya sea anónima o con nombre) que pasamos a otra función como parámetro de función que en el resultado devuelve esa función pasada.

Ejemplo

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

No te confundas

Hay algunas funciones predeterminadas en php que aceptan el nombre de la función de devolución de llamada como una cadena en su parámetro porque evitan conflictos entre el nombre de la constante y el nombre de la función. Así que no te confundas con este tipo de cosas.

Con PHP 5.3 , ahora puede hacer esto:

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

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

Finalmente, una buena manera de hacerlo. Una gran adición a PHP , porque las devoluciones de llamada son impresionantes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top