12

php シンプルな HTML DOM パーサーを使用して、記事でいっぱいのページの各記事から画像、タイトル、日付、および説明を取得したいと考えています。API を見ると、コールバック関数を設定する set_callback があることに気付きました。ただし、これが何をするのか、またはどのように使用するのかわかりませんか? 例の1つでは、いくつかのものを取り除く関数を呼び出すために使用されていましたが、これを使用してすべての関数を呼び出す必要があるかどうか疑問に思っていますか?

なぜこれを使用するのか、これまでコールバック関数に出くわしたことがないので、これは何をするのか疑問に思っていると思います!

4

6 に答える 6

25

基本的なコールバック関数の例を次に示します。

<?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()に渡し、渡された関数を呼び出します。

于 2008-10-23T20:22:49.070 に答える
3

コールバックは、関数、オブジェクト インスタンスのメソッド、またはクラスの静的メソッドのいずれかです。いずれにせよ、それは一種の関数ポインタです。一部の言語では、関数は特定の型です。したがって、関数を変数に割り当てることができます。これらは一般に関数指向言語と呼ばれます。良い例は Javascript です。

PHP では、コールバックは次のいずれかになります。

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

のマニュアル エントリを参照してくださいis_callable

かなり冗長な関数でコールバックを呼び出すことができますcall_user_func

于 2008-10-23T22:53:34.803 に答える
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()" は見つかったデータに対して実行されます。繰り返しますが、この特定のライブラリがどのように機能するか (つまり、コールバック関数が呼び出されるメソッド) がわかりません。

于 2008-10-23T20:25:15.663 に答える