문제

나는 사용하고 싶다 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 ().

따라서 위의 예에서는 이름을 전달합니다. 이 숫자가 돋보입니다 기능 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, 콜백은 굉장하기 때문에.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top