백엔드 개발 PHP7 PHP 7.4의 화살표 함수

PHP 7.4의 화살표 함수

Nov 30, 2019 am 11:58 AM
PHP 7.4

화살표 함수라고도 알려진 짧은 클로저는 PHP에서 짧은 함수를 작성하는 방법입니다. 이 표기법은 array_map 또는 array_filter와 같은 함수에 클로저를 전달할 때 유용합니다.

다음과 같습니다:

// A collection of Post objects
$posts = [/* … */];
$ids = array_map(fn($post) => $post->id, $posts);
로그인 후 복사

그 전에는 다음과 같이 작성해야 했습니다.

$ids = array_map(function ($post) {
    return $post->id;
}, $posts);
로그인 후 복사

짧은 클로저 사용 방법을 요약해 보겠습니다.

● PHP 7.4부터 사용 가능

● fn 키워드로 시작

● 하나의 표현식인 return 문만 가질 수 있습니다.

● return 키워드는 허용되지 않습니다.

● 매개변수 및 반환 유형은 유형 힌트를 사용할 수 있습니다.

위의 예를 작성하는 보다 엄격한 형식의 방법은 다음과 같습니다.

$ids = array_map(fn(Post $post): int => $post->id, $posts);
로그인 후 복사

두 가지 더 언급할 사항:

● 스프레드 연산자가 허용됩니다.

● 참조가 허용되며 두 매개변수 모두 반환 값으로 사용할 수 있습니다. ​​

참조로 값을 반환하려면 다음 구문을 사용해야 합니다:

fn&($x) => $x
로그인 후 복사

간단히 말해서 짧은 클로저는 하나의 표현식만 허용한다는 점을 제외하면 일반 클로저와 기능이 동일합니다.

# 여러 줄 금지

잘 읽으셨습니다. 짧은 클로저는 하나의 표현식만 가질 수 있습니다. 즉, 여러 줄을 포함할 수 없습니다.

이유는 다음과 같습니다.

짧은 클로저의 목표는 장황함을 줄이는 것입니다. 물론 fn은 모든 경우에 함수보다 짧습니다. 그러나 RFC 작성자 Nikita Popov는 여러 줄 기능을 처리하는 경우 짧은 클로저를 사용하면 이점이 적다고 믿습니다.

결국, 여러 줄로 된 클로저는 이미 정의상 더 장황하므로 두 개의 키워드(함수 및 반환)를 건너뛸 수 있어도 큰 차이는 없습니다.

이 견해에 동의할지 여부는 귀하에게 달려 있습니다. 내 프로젝트에는 한 줄 클로저도 많이 있지만 여러 줄 클로저도 많이 있는데, 그런 경우에는 개인적으로 짧은 구문이 그리워집니다.

희망은 있습니다. 미래에 짧은 여러 줄 클로저를 추가하는 것이 가능할 수도 있지만 이는 단지 RFC일 뿐입니다.

# 외부 범위의 값

짧은 클로저와 일반 클로저의 또 다른 중요한 차이점은 짧은 클로저에서는 외부 범위의 데이터에 액세스하기 위해 use 키워드가 필요하지 않다는 것입니다.

$modifier = 5;
array_map(fn($x) => $x * $modifier, $numbers);
로그인 후 복사

외부 범위의 변수는 수정할 수 없다는 점에 유의하세요. 값은 참조 바인딩이 아닌 값 바인딩됩니다. 즉, 짧은 클로저 내에서 $modifier를 변경할 수 있지만 외부 범위의 $modifier 변수에는 영향을 미치지 않습니다.

물론 한 가지 예외는 일반 클로저와 똑같이 작동하는 $this 키워드입니다.

array_map(fn($x) => $x * $this->modifier, $numbers);
로그인 후 복사

#Future Possibilities

이미 여러 줄의 짧은 클로저에 대해 언급했는데, 이는 여전히 미래의 가능성입니다.

또 다른 아이디어는 getter 및 setter와 같은 클래스에 짧은 클로저 구문을 허용하는 것입니다.

class Post {
    private $title;
 
    fn getTitle() => $this->title;
}
로그인 후 복사

짧은 클로저는 여전히 개선의 여지가 있지만 전반적으로 환영받는 기능입니다. 가장 큰 것은 아마도 여러 줄의 짧은 클로저일 것입니다

번역: https://stitcher.io/blog/short-closures-in-php

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

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)