> 백엔드 개발 > PHP 튜토리얼 > PHP의 콜백 함수 코드 분석

PHP의 콜백 함수 코드 분석

烟雨青岚
풀어 주다: 2023-04-08 20:26:01
앞으로
2311명이 탐색했습니다.

PHP의 콜백 함수 코드 분석

php의 콜백 함수 코드 분석

1. 콜백 함수의 개념

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

다른 언어의 콜백 함수 개념은 비슷하지만 다양한 언어의 콜백 함수 구현 메커니즘이 다릅니다. 일반적으로 콜백 함수는 우리가 정의하는 함수이지만 직접 호출하지는 않습니다. . 이름과 매개변수를 수신하여 콜백 함수를 호출하는 다른 함수를 통해 호출됩니다.

2. PHP PHP의 콜백 함수 는 콜백 함수를 지원하기 위해

call_user_func()

call_user_func_array() 두 가지 내장 함수를 제공합니다.             이 두 함수의

차이점

은 call_user_func_array가 콜백 함수의 매개변수를 배열 형식으로 받는다는 것입니다. 해당 프로토타입을 보면 알 수 있습니다. 혼합 call_user_func_array ( 호출 가능 $callback , array$param_arr ) 두 개의 매개변수만 있습니다 ; call_user_func($callback, 매개변수 1, 매개변수 2,...)의 매개변수 개수는 콜백 함수의 매개변수에 따라 결정됩니다.

3. 콜백 함수 구현

스크립트에서 전역 함수를 구현하는 방법, 클래스에서 $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;));
로그인 후 복사

읽어주신 모든 분들께 감사드리며, 많은 혜택 받으시길 바라겠습니다.

이 기사는 https://blog.csdn.net/u010544319/article/details/9186323

추천 튜토리얼: "

PHP Tutorial"에서 복제되었습니다.

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

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿