>  기사  >  백엔드 개발  >  PHP의 익명 함수 및 클로저 사용법

PHP의 익명 함수 및 클로저 사용법

墨辰丷
墨辰丷원래의
2018-05-15 14:25:211419검색

이 글은 주로 PHP의 익명 함수와 클로저 사용법을 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

1: 익명 함수(php5.3.0 이상에서만 사용할 수 있습니다)

PHP의 익명 함수(익명 함수)는 클로저 함수(closures)라고도 하며, 없이 함수를 지정할 수 있습니다. 이름 . 가장 일반적으로 사용되는 것은 콜백 함수의 매개변수 값입니다. (http://php.net/manual/zh/functions.anonymous.php)

익명 함수 정의:

$closureFunc = function(){

    ....

 };

예: 익명 함수를 변수에 할당하고 변수를 통해 호출합니다


출력: hello world!



 $closureFunc = function($str){

   echo $str;

  };  $closureFunc("hello world!");

2.2의 종료는 익명 함수의 지역 변수를 나타냅니다.


function closureFunc1(){    $func = function(){        echo "hello";
    };    $func();
}
closureFunc1();//输出: hello


위 함수를 실행한 후 이와 같은 익명 함수에서는 로컬 변수를 사용할 수 없다는 오류가 보고됩니다. 이 때 PHP 키워드 사용을 인용해야 합니다.



function closureFunc2(){    $num = 1;    $func = function() use($num){        echo $num;
    };    $func();
}
closureFunc2();//输出: 1


 2.3  返回匿名函数



function closureFunc3(){    $num = 1;    $func = function() use($num){        echo $num;
    };    return $func;
}$func = closureFunc3(); //函数返回匿名函数$func(); //然后我们在用$func() 调用//输出: 1


2.4 当我们在返回匿名函数时候怎么给匿名函数传参呢? 其实跟普通函数传参数一样



function closureFunc4(){    $num = 1;    $func = function($str) use($num){        echo $num;        echo "\n";        echo $str;
    };    return $func;
}$func = closureFunc4();$func("hello, closure4");//输出:
//1
//hello, closure4


2.5 怎么用闭包来改变上下文引用的变量值?



function closureFunc5(){    $num = 1;    $func = function() use($num) {        echo "\n";        $num++;        echo $num;
    };    echo "\n";    echo $num;    return $func;
}$func = closureFunc5();$func();$func();$func();//输出:
// 1
// 2
// 2
// 2

PHP의 익명 함수 및 클로저 사용법

看上面的输入结果,显然没有达到目的, 其实只要加一个 & 引用符号就可以了



function closureFunc5(){    $num = 2;    $func = function() use(&$num) {        echo "\n";        $num++;        echo $num;
    };    echo "\n";    echo $num;    return $func;
}$func = closureFunc5();$func();$func();$func();//输出:
// 2
// 3
// 4
// 5


2.6 把匿名函数当作参数传递



function callFunc($func){    $func("argv");
}

callFunc(function($str){    echo $str;
})//输出:
// argv

相关推荐:

关于JavaScript 闭包的相关知识的了解和使用

js闭包使用详解

关于Python闭包机制的深入理解

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

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