화살표 함수라고도 불리는 짧은 클로저는 PHP로 작성된 짧은 함수입니다. 이 함수는 array_map
을 사용하는 등 함수에 클로저를 전달할 때 매우 유용합니다. array_map
或是 array_filter函数时.
这就是它们看起来的样子:
// Post 对象的集合 $posts = [/* … */]; $ids = array_map(fn($post) => $post->id, $posts);
而以前,你必须这样写:
$ids = array_map(function ($post) { return $post->id; }, $posts);
我们来总结一下短闭包函数如何使用.
在 PHP 7.4 里可用
以 fn 关键字开头只能包含 一个 表达式, 即返回表达式return 关键字可忽略参数和返回类型均可做类型暗示
上面示例更严格的类型限定写法可写作:
$ids = array_map(fn(Post $post): int => $post->id, $posts);
有两点需要提及:
还允许使用扩展操作符允许引用,两个参数都可以作为返回值
假如你想要通过引用的方式返回结果,应该使用以下语法:
fn&($x) => $x
$modifier = 5; array_map(fn($x) => $x * $modifier, $numbers);전에는 다음과 같이 작성해야 했습니다.
array_map(fn($x) => $x * $this->modifier, $numbers);짧은 클로저 기능 사용 방법을 요약해 보겠습니다.PHP 7.4에서 사용 가능fn 키워드로 시작하면 하나의 표현식, 즉 반환 표현식만 포함할 수 있습니다. return 키워드는 유형 힌트를 수행할 수 있으며 더. 위 예의 엄격한 유형 정의는 다음과 같이 작성할 수 있습니다:
$ids = array_map(fn(Post $post): int => $post->id, $posts); code> 언급해야 할 두 가지 사항이 있습니다:또한 스프레드 연산자를 사용하여 참조를 허용하고 두 매개 변수 모두 반환 값으로 사용할 수 있습니다.결과를 참조로 반환하려면 다음 구문을 사용해야 합니다.
fn&($x) => $x
간단히 말하면, 짧은 클로저는 하나의 표현식만 허용된다는 점을 제외하면 일반 클로저와 동일하게 작동합니다. 한 줄올바르게 이해해야 합니다. 짧은 클로저는 하나의 표현식만 가질 수 있습니다. 이는 클로저 본문에 여러 줄이 있을 수 없음을 의미합니다. 이유는 다음과 같습니다. 짧은 폐쇄의 목적은 중복을 줄이는 것입니다. 물론 fn은 어떤 경우에도 함수보다 짧습니다. 그러나 RFC 작성자 Nikita Popov는 여러 줄로 구성된 표현식을 다루는 경우 클로저를 사용하면 얻을 수 있는 이점이 훨씬 적다고 믿습니다.
결국, 여러 줄 클로저의 정의는 이미 매우 중복되므로 이 두 키워드( function 및 return )가 있거나 없거나 큰 차이는 없습니다. 이 관점에 동의할지 여부는 귀하에게 달려 있습니다. 내 프로젝트에서 한 줄 클로저에 대한 많은 시나리오를 생각할 수 있지만 여러 줄 클로저에 대한 시나리오도 많이 있으며 개인적으로 나는 그러한 경우에 대해 더 짧은 구문을 선호합니다.
🎜희망은 있습니다. 여러 줄의 짧은 클로저가 향후 추가될 수 있지만 이는 별도의 RFC이기도 합니다. 🎜🎜외부 범위의 값🎜🎜짧은 클로저와 일반 클로저의 또 다른 주목할만한 특징은 짧은 클로저가 use 키워드를 사용하지 않고도 외부 범위의 데이터에 액세스할 수 있다는 것입니다. 🎜class Post {
private $title;
fn getTitle() => $this->title;
}
🎜외부 범위의 변수는 수정할 수 없다는 점에 유의하세요. 참조로 전달하는 것이 아니라 값으로 전달하기 때문입니다. 이는 짧은 클로저 내부에서 $modifier 변수를 변경할 수 있지만 외부 범위의 $modifier 변수에는 영향을 미치지 않음을 의미합니다. 🎜🎜물론, 한 가지 예외가 있는데, 바로 $this 키워드로 일반 클로저에서와 똑같은 일을 합니다: 🎜rrreee🎜개발 전망🎜🎜제가 이미 언급한 여러 줄 클로저는 여전히 미래의 클로저입니다. 가능한 개발 가능 내 생각에는 getter 및 setter 함수와 같은 짧은 클로저를 클래스에 사용할 수 있도록 허용하는 것이 있습니다. 🎜rrreee🎜 전반적으로 짧은 클로저는 개선해야 할 부분이 많지만 매우 환영받는 기능입니다. 가장 가능성이 높은 것은 여러 줄 폐쇄입니다.🎜🎜🎜추천 학습:🎜PHP 비디오 튜토리얼🎜🎜
위 내용은 세부 사항---PHP 7.4의 새로운 화살표 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.
