>백엔드 개발 >PHP 튜토리얼 >PHP 콜백 함수 개념 및 사용법

PHP 콜백 함수 개념 및 사용법

小云云
小云云원래의
2017-12-07 16:17:361663검색

1. 콜백 함수의 개념

먼저 C 언어의 콜백 함수를 살펴보겠습니다. 콜백 함수는 함수 포인터를 통해 호출되는 함수입니다. 함수 포인터(주소)를 다른 함수에 매개변수로 전달하고 이 포인터가 가리키는 함수를 호출하는 데 사용되는 경우 이를 콜백 함수라고 합니다. 콜백 함수는 함수 구현자가 직접 호출하는 것이 아니라 특정 이벤트나 조건이 발생했을 때 상대방이 해당 이벤트나 조건에 대응하기 위해 호출하는 함수이다.

다른 언어의 콜백 함수 개념은 비슷하지만 다양한 언어의 콜백 함수 구현 메커니즘이 다릅니다. 일반적으로 콜백 함수는 우리가 정의하는 함수이지만 직접 호출하지는 않지만, 이를 통해 다른 함수를 호출하기 위해 이 함수는 해당 함수의 이름과 매개변수를 전달받아 콜백 함수를 호출합니다.

2. PHP에서 콜백 기능 구현

PHP는 콜백 함수를 지원하기 위해 두 가지 내장 함수를 제공합니다. 이 두 함수의 차이점은 call_user_func()call_user_func_array()call_user_func_array가 콜백 함수의 매개변수를 배열 형태로 받는다는 것입니다. 해당 프로토타입을 보면 알 수 있습니다: mixed call_user_func_array (callable $callback, array$param_arr) 매개변수가 2개뿐입니다. call_user_func($callback, 매개변수 1, 매개변수 2,...)의 매개변수 개수는 콜백 함수의 매개변수에 따라 결정됩니다.

스크립트에서 전역 함수에 대한 콜백을 구현하는 방법, 클래스에서 $this를 사용하지 않는 비정적 메서드, 클래스에서 $this를 사용하는 비정적 메서드(객체에서 전달해야 함), 클래스에서 정적 메서드를 구현하는 방법은 다음과 같습니다. 테스트를 통과한 코드.

<?php
//普通函数
function f1($arg1,$arg2)
{
  echo __FUNCTION__.&#39;exec,the args is:&#39;.$arg1.&#39; &#39;.$arg2;
  echo "<br/>";
}
//通过call_user_func调用函数f1
call_user_func(&#39;f1&#39;,&#39;han&#39;,&#39;wen&#39;);
  //通过call_user_func_array调用函数
call_user_func_array(&#39;f1&#39;,array(&#39;han&#39;,&#39;wen&#39;));
class A
{
  public $name;
  function show($arg1)
  {
    echo &#39;the arg is:&#39;.$arg1."<br/>";
    echo &#39;my name is:&#39;.$this->name;
    echo "<br/>";
  }
  function show1($arg1,$arg2)
  {
    echo __METHOD__.&#39; exec,the args is:&#39;.$arg1.&#39; &#39;.$arg2."<br/>";
  }
  public static function show2($arg1,$arg2)
  {
    echo __METHOD__.&#39; of class A exec, the args is:&#39;.$arg1.&#39; &#39;.$arg2."<br/>";
  }
}
//调用类中非静态成员函数,该成员函数中有$this调用了对象中的成员
$a = new A;
$a->name = &#39;wen&#39;;
call_user_func_array(array($a,&#39;show&#39;,),array(&#39;han!&#39;));
//调用类中非静态成员函数,没有对象被创建,该成员函数中不能有$this
call_user_func_array(array(&#39;A&#39;,&#39;show1&#39;,),array(&#39;han!&#39;,&#39;wen&#39;));
//调用类中静态成员函数
call_user_func_array(array(&#39;A&#39;,&#39;show2&#39;),array(&#39;argument1&#39;,&#39;argument2&#39;));

실행 결과:

f1exec,the args is:han wen
f1exec,the args is:han wen
the arg is:han!
my name is:wen
A::show1 exec,the args is:han! wen
A::show2 of class A exec, the args is:argument1 argument2

관련 권장 사항:

자바스크립트 콜백 함수의 의미

콜백 함수 사용 예

php 콜백 함수 및 익명 함수 사용에 대한 자세한 설명

위 내용은 PHP 콜백 함수 개념 및 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.