>백엔드 개발 >PHP 튜토리얼 >PHP 콜백 함수 및 익명 함수 사용 사례 분석

PHP 콜백 함수 및 익명 함수 사용 사례 분석

php中世界最好的语言
php中世界最好的语言원래의
2018-05-18 10:26:311593검색

이번에는 PHP 콜백 함수익명 함수를 가지고 왔습니다. 사용 사례 분석, PHP 콜백 함수와 익명 함수를 사용할 때 Notes는 무엇인지, 다음은 실제 사례입니다. 살펴보겠습니다.

1. 콜백 함수

PHP의 콜백 함수는 실제로 C, Java 및 기타 언어의 콜백 함수와 동일한 기능을 가지고 있습니다. 메인 스레드 실행 중에 갑자기 점프하여 설정된 콜백 함수를 실행합니다. ;

콜백 함수가 실행된 후 메인 스레드로 돌아가서 다음 프로세스를 처리합니다

PHP에서 콜백 함수를 호출할 때 C나 Java처럼 함수 이름을 함수 매개변수로 직접 사용하고 싶지는 않지만, PHP에서 해당 함수 사용 문자열 이름 실행

1.1, 매개변수 없는 콜백

<?php
//无参数回调
function callback(){
  echo &#39;execute no parameters callback.<br/>';
}
function main($callback){
  echo 'execute main start.<br/>';
  $callback();
  echo 'execute main end.<br/>';
}
main('callback');
//结果
ecute main start.
execute no parameters callback.
execute main end.

1.2, 전역 콜백 함수

<?php
//全局函数回调
function callback($a,$b){
  echo "$a<====>$b.<br/>";
}
$func = 'callback';
call_user_func($func, 1,2);
call_user_func_array($func, array(1,2));
//结果
1<====>2.
1<====>2.

1.3, 클래스 메서드 및 정적 메서드 콜백

<?php
class Test{
  //成员函数
  function callback($a,$b){
    echo "callback $a<====>$b.<br/>";
  }
  public static function staticCallback($a,$b){
    echo "staticCallback $a<====>$b.<br/>";
  }
}
//非静态方法调用方式一
$test = new Test();
call_user_func(array($test, 'callback'), 1,2);
call_user_func_array(array($test, 'callback'), array(1,2));
//非静态方法调用方式二
$func = 'callback';
$test->$func(7,9);
//静态方法调用方式
call_user_func(array('Test', 'staticCallback'), 4,6);
call_user_func_array(array('Test', 'staticCallback'), array(4,6));
call_user_func_array("Test::staticCallback", array(4,6));
//结果
callback 1<====>2.
callback 1<====>2.
callback 7<====>9.
staticCallback 4<====>6.
staticCallback 4<====>6.
staticCallback 4<====>6.

2, 익명 함수

2.1, 익명 클로저라고도 불리는 PHP의 함수(익명 함수)를 사용하면 이름 없이 함수를 지정할 수 있습니다. 가장 일반적으로 사용되는 것은 콜백 함수의 매개변수

<?php
$closureFunc = function($str){
  echo $str.'<br/>';
};
$closureFunc("hello world!");
//结果
hello world!

2.2, 클로저

2.2.1, 매개변수 전달, 지역 변수 참조

<?php
$closureFunc = function($name){
  $sex = '男';
  $func = function($age)use ($name,$sex){
    echo "$name--$sex--$age<br/>";
  };
  $func(23);
};
$func = $closureFunc("lvfk");
//结果
lvfk--男--23

2.2.2, 클로저 함수 반환

<?php
$closureFunc = function($name){
  echo 'closureFunc ';
  $sex = '男';
  echo "$name+++$sex<br/>";
  $func = function()use ($name,$sex){
    echo "$name--$sex<br/>";
  };
  return $func;
};
$func = $closureFunc("lvfk");
$func();
$func();
//结果
closureFunc lvfk+++男
lvfk--男
lvfk--男

2.2입니다. 3, 클로저 컨텍스트 값을 변경하려면 패키지가 참조로 전달되어야 합니다

<?php
$closureFunc = function($name){
  $age = 1;
  echo "$name+++$age<br/>";
  $func = function()use ($name,&$age){
    $age++;
    echo "$name--$age<br/>";
  };
  return $func;
};
$func = $closureFunc("lvfk");
$func();
$func();
$func();
//结果
lvfk+++1
lvfk--2
lvfk--3
lvfk--4
위는 클로저를 간단히 적용한 예입니다. 함수 외부에서 클로저를 사용할 때 매개변수 내용이 전달되는 것을 볼 수 있습니다. 클로저는 실제로 객체 콘텐츠일 수 있습니다.

클로저 내에서 컨텍스트 객체 값을 변경할 수도 있지만 참조로 전달해야 합니다.

이 기사의 사례를 읽고 나면 방법을 마스터했다고 생각합니다. 더 흥미로운 내용이 있으니 PHP 중국어 웹사이트의 다른 관련 기사도 주목해주세요!

추천 도서:

PHP에서 단방향 해시 암호화를 구현하는 단계에 대한 자세한 설명

PHP에서 항목 파일을 숨기는 단계에 대한 자세한 설명

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

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