>  기사  >  백엔드 개발  >  PHP 익명 함수

PHP 익명 함수

王林
王林원래의
2024-08-29 12:47:23543검색

특정 이름 없이 생성하여 PHP 스크립트에서 입력 인수로 사용할 수 있는 함수를 익명 함수라고 합니다. 이 함수는 Closure 클래스를 사용하여 구현됩니다. 익명 함수를 변수에 할당하는 과정은 다른 할당 구문과 동일합니다. 상위 범위의 변수를 사용 언어 구성으로 전달하면 하위 범위의 익명 함수가 변수를 상속할 수 있습니다.

광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

구문:

익명 함수에는 이름이 없습니다.

function($arg1,$arg2,….,$argN){
//The definition for the anonymous function
};

다양한 사용 사례 유형

효과적인 PHP 코딩을 개발할 때 익명 함수를 사용하여 달성할 수 있는 다양한 목표가 있습니다. 익명 함수는 해당 함수가 사용되는 다양한 사용 사례 유형에 따라 다양한 기능을 나타냅니다.

다음은 5가지 주요 사용 사례입니다.

1. 사용 사례 1

익명 함수를 사용하여 변수에 값을 할당할 수 있습니다. 다른 할당 연산과 동일한 구문을 따릅니다.

:

아래 코드 조각은 주어진 입력 값을 출력 값에 할당하고 출력 변수를 사용하여 값을 인쇄하는 데 사용됩니다.

코드:

<?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);
?>

출력:

아래와 같이 익명 함수 호출을 통해 문자열 및 정수 유형의 지정된 입력 값이 인쇄됩니다.

PHP 익명 함수

2. 사용 사례 2

익명 함수 정의 기능은 인라인 콜백 함수를 만드는 데 중요한 역할을 합니다.

이 경우 익명 함수를 다른 함수에 입력 인수로 전달할 수 있습니다.

아래 코드는 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 스크립트를 실행하면 콜백 함수가 트리거되고 익명 함수의 출력이 아래와 같이 출력 창에 인쇄됩니다.

PHP 익명 함수

3. 사용 사례 3

익명 함수를 사용하여 상위 범위에서 변수를 상속받을 수 있습니다.

이 사용 사례는 슈퍼 전역 변수, $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 익명 함수

4. 사용 사례 4

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' 클래스의 객체 덤프 정보는 아래와 같이 출력 창에 출력됩니다.

PHP 익명 함수

5. 사용 사례 5

객체 생성 시 동일한 객체의 범위에서 클로저가 인스턴스화되고 등록되면 객체의 즉각적인 소멸을 방지하는 순환 참조가 생성됩니다. 정적 익명 기능을 적용하면 스크립트가 지연을 극복할 수 있습니다.

일반 익명 함수와 정적 익명 함수의 사용 비교 분석은 아래 예를 통해 보여줍니다.

예:

사례 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";
?>

출력:

PHP 익명 함수

사례 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 버전 5.4 이후의 기본 동작입니다. 이는 정적 익명 기능을 구현하여 방지할 수 있습니다.
  • 한 번만 사용하도록 되어 있는 함수를 정의하는 데 사용할 수 있으므로 성능이 향상됩니다. 익명 함수는 해당 함수에서 실행해야 하는 작업에만 사용할 수 있으며 나머지 코드에서는 사용할 수 없습니다.
  • 익명 함수를 사용하여 변수에 값을 할당하면 PHP는 자동으로 표현식을 Closure 내부 클래스 인스턴스로 변환합니다.

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

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