2008-10-23 17 views
11

我想使用php simple HTML DOM parser來從文章中的每篇文章中抓取圖像,標題,日期和描述。在看API時,我注意到它有一個set_callback,它設置了一個回調函數。但我不知道這是做什麼或我會如何使用它?在其中一個例子中,它用來調用一個函數去掉一些東西,我想知道你是否必須使用它來調用所有函數?什麼是回調函數,以及如何與OOP一起使用

我想我想知道爲什麼我使用這個,它做什麼,因爲我從來沒有遇到過回調函數!

回答

20

這裏有一個基本的回調函數,例如:

<?php 

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

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

thisFuncTakesACallback('thisFuncGetsCalled'); 
?> 

您可以調用已存儲在變量這樣它的名字的函數:$變量()

所以,在上面的例子中,我們通過名thisFuncGetsCalled功能thisFuncTakesACallback()然後調用傳遞的功能。

+0

偉大而簡單的答案,謝謝。但我有一個問題,具有此功能的最低PHP版本是否可用? – 2014-03-09 13:55:39

+3

此答案已過時。今天,PHP使用術語「回調」來指代一種特定的功能。有關更多信息,請閱讀PHP自己的文檔:http://php.net/manual/en/function.call-user-func.php – 2015-11-25 14:36:06

3

的回調函數將在任何數據是使用該功能由特定方法返回。

我不知道如何特定庫的作品,但它可以作爲簡單的東西:

$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()」將發現的所有的數據運行。再次,我不確定這個特定的庫是如何工作的(即回調函數會被調用什麼方法)

2

回調是一個函數,一個對象實例的方法,或者一個類的靜態方法。無論哪種方式,它都是一種函數指針。在某些語言中,函數是特定的類型。所以你可以給一個變量賦一個函數。這些通常被稱爲功能導向語言。 Javascript是一個很好的例子。

在PHP中,回調可以是任何的:

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

is_callable手動輸入。

您可以使用相當詳細的函數call_user_func調用回調。

0

認定中

甲回調/調用是一個簡單的函數(無論它是匿名或命名的函數),我們傳遞給另一個功能爲功能參數,其在該傳遞的函數的結果返回。

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中接受回調函數的名稱作爲自己的,因爲避免相互衝突的參數字符串一些默認功能常數名稱和函數名稱之間。所以不要在這些事情上混淆。

0

隨着PHP 5.3,你現在可以這樣做:

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

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

最後,一個很好的辦法做到這一點。 PHP是一個很好的補充,因爲回調非常棒。

相關問題