我想使用php 简单的 HTML DOM 解析器从充满文章的页面上的每篇文章中获取图像、标题、日期和描述。在查看 API 时,我注意到它有一个 set_callback 设置回调函数。但是我不确定这是做什么的或我将如何使用它?在其中一个示例中,它用于调用删除一些内容的函数,我想知道您是否必须使用它来调用所有函数?
我想我想知道为什么我使用它,它有什么作用,因为我以前从未遇到过回调函数!
我想使用php 简单的 HTML DOM 解析器从充满文章的页面上的每篇文章中获取图像、标题、日期和描述。在查看 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
,因为回调很棒。
目的是调用我们想要的函数,例如:secretCode()
但我们想使用另一个函数作为helper
或service
为我们调用它:
<?php
// $call parameter can be anything
function callBackServiceCenter($call)
{
echo "[callBackServiceCenter]: Hey, this is callBackServiceCenter function <br>We have received your command to call your requested function and we are now calling it for you! <br />";
// Below is the part where it will call our secretCode()'s function
$call();
// And we can print other things after the secretCode()'s function has been executed:
echo "[callBackServiceCenter]: Thank you for using our service at callBackServiceCenter. Have a nice day!<br />";
}
function secretCode()
{
echo "[secretCode]: Hey, this is secretCode function. Your secret code is 12345<br />";
}
callBackServiceCenter( 'secretCode' );
?>
输出:
[callBackServiceCenter]: Hey, this is callBackServiceCenter function
We have received your command to call your requested function and we are now calling it for you!
[secretCode]: Hey, this is secretCode function. Your secret code is 12345
[callBackServiceCenter]: Thank you for using our service at callBackServiceCenter. Have a nice day!