>  기사  >  백엔드 개발  >  PHP 콜백 함수의 개념과 사용법

PHP 콜백 함수의 개념과 사용법

墨辰丷
墨辰丷원래의
2018-05-17 13:54:371179검색

이 글은 주로 PHP 콜백 함수의 개념과 사용법을 소개하고, 콜백 함수의 개념과 원리를 간략하게 소개하며, 콜백 함수와 관련된 사용법을 예시 형태로 분석해 도움이 필요한 친구들이 참고할 수 있습니다

자세히

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

관련 권장 사항:

코드에서 콜백 함수를 교체하는 방법

JS 콜백 함수의 자세한 사용 사례

사용 JS 콜백 함수 사례 설명

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

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