특정 이름 없이 생성하여 PHP 스크립트에서 입력 인수로 사용할 수 있는 함수를 익명 함수라고 합니다. 이 함수는 Closure 클래스를 사용하여 구현됩니다. 익명 함수를 변수에 할당하는 과정은 다른 할당 구문과 동일합니다. 상위 범위의 변수를 사용 언어 구성으로 전달하면 하위 범위의 익명 함수가 변수를 상속할 수 있습니다.
광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
구문:
익명 함수에는 이름이 없습니다.
function($arg1,$arg2,….,$argN){ //The definition for the anonymous function };
효과적인 PHP 코딩을 개발할 때 익명 함수를 사용하여 달성할 수 있는 다양한 목표가 있습니다. 익명 함수는 해당 함수가 사용되는 다양한 사용 사례 유형에 따라 다양한 기능을 나타냅니다.
다음은 5가지 주요 사용 사례입니다.
익명 함수를 사용하여 변수에 값을 할당할 수 있습니다. 다른 할당 연산과 동일한 구문을 따릅니다.
예:
아래 코드 조각은 주어진 입력 값을 출력 값에 할당하고 출력 변수를 사용하여 값을 인쇄하는 데 사용됩니다.
코드:
<?php $Var = function($value) //Anonymous function is used to assign value to variable $Var { //Anonymous function definition printf("The assigned value is: %s\r\n", $value); }; //Calling the anonymous function using the assigning variable $Var with a string value input $Var('A string value is assigned'); //Calling the anonymous function using the assigning variable $Var with a integer value input $Var(35); ?>
출력:
아래와 같이 익명 함수 호출을 통해 문자열 및 정수 유형의 지정된 입력 값이 인쇄됩니다.
익명 함수 정의 기능은 인라인 콜백 함수를 만드는 데 중요한 역할을 합니다.
이 경우 익명 함수를 다른 함수에 입력 인수로 전달할 수 있습니다.
아래 코드는 preg_replace_callback 콜백 함수를 정의하기 위해 작성되었습니다.
입력 매개변수 중 하나로 익명 함수가 있습니다.
코드:
<?php //creating callback function using PHP anonymous function // preg_replace_callback is the calling function echo preg_replace_callback('~-([a-z])~', function ($input) { //Anonymous function definition return strtoupper($input[1]); }, 'This is an anonymous callback function!');//End of the definition of the callback function ?>
출력:
PHP 스크립트를 실행하면 콜백 함수가 트리거되고 익명 함수의 출력이 아래와 같이 출력 창에 인쇄됩니다.
익명 함수를 사용하여 상위 범위에서 변수를 상속받을 수 있습니다.
이 사용 사례는 슈퍼 전역 변수, $this 변수 또는 동일한 이름을 가진 매개 변수 변수를 지원하지 않습니다.
예:
코드:
<?php $input_text = 'Initial message'; $outputVar = function () { //Anonymous function definition var_dump($input_text); }; $outputVar(); // Inherit the variable $input_text by value $outputVar = function () use ($input_text) { var_dump($input_text); }; $outputVar(); // Inherit the variable $input_text by-reference $outputVar = function () use (&$input_text) { var_dump($input_text); }; $outputVar(); // Modifying the variable value of parent scope from the function call $input_text = ' Next message'; $outputVar(); // Inserting regular argument along with parent scope variable $outputVar = function ($arg) use ($input_text) { var_dump($arg . ' ' . $input_text); }; $outputVar("Random message"); ?>
출력:
위 코드의 결과 출력은 다음과 같이 생성됩니다.
PHP 버전 5.4 이상에서는 클래스를 선언하는 경우 기본적으로 클래스가 익명 함수 기능에 바인딩됩니다. 이렇게 하면 클래스 내에 정의된 익명 함수 범위 내에서 '$this' 변수를 사용할 수 있습니다.
예:
코드:
<?php class AnonymousClass { public function Classfunction() { return function() { var_dump($this); //Retrieves the dump information of class object using $this variable,once //it is created }; } } $Classobject = new AnonymousClass; $function = $Classobject->Classfunction(); $function(); ?>
출력:
'AnonymousClass' 클래스의 객체 덤프 정보는 아래와 같이 출력 창에 출력됩니다.
객체 생성 시 동일한 객체의 범위에서 클로저가 인스턴스화되고 등록되면 객체의 즉각적인 소멸을 방지하는 순환 참조가 생성됩니다. 정적 익명 기능을 적용하면 스크립트가 지연을 극복할 수 있습니다.
일반 익명 함수와 정적 익명 함수의 사용 비교 분석은 아래 예를 통해 보여줍니다.
예:
사례 1: 정적 익명 함수를 사용하지 않음
코드:
<?php class TrialClass { private $AnonymousVar; public function __construct() { $this->AnonymousVar = function () { }; } public function __destruct() { echo "Destruction function is called"; } } new TrialClass; echo "After the object is being defined"; echo "\n"; ?>
출력:
사례 2: 정적 익명 함수 포함
코드:
<?php class TrialClass { private $AnonymousVar; public function __construct() { $this->closure = self::createClosure(); } public static function createClosure() { return function () { }; } public function __destruct() { echo "Destruction function is called"; } } new TrialClass; echo "\n"; echo "\n"; echo "After the object is being defined"; echo "\n"; echo "\n"; ?>
출력:
위 내용은 PHP 익명 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!