php箭頭是短閉包,也叫箭頭函數,是一種用php寫的短函數,當傳遞閉包給函數時,這個功能很有用。短閉包只能有一個表達式,這意味著閉包體中不能有多行,短閉包的目的是為了減少冗餘。
本教學操作環境:windows10系統、php8.1.3版本、DELL G3電腦。
php裡箭頭什麼意思?
PHP 7.4 新語法之箭頭函數實例詳解
短閉包,也叫做箭頭函數,是一種用php 寫的短函數.當傳遞閉包給函數時,這個功能是非常有用的,例如使用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
#簡而言之,除了只允許一個表達式以外,簡短的閉包和普通閉包的功能是一樣的。
單行
你應該正確的理解它:短閉包只能有一個表達式。這意味著閉包體中不能有多行。
原因如下:短閉包的目的是為了減少冗餘。當然,在任何情況下, fn 都比 function 短。然而, RFC 的創建者 Nikita Popov 認為,如果你要處理的是多行表達式的函數,那麼使用閉包獲得的益處就更少了。
畢竟,多行閉包的定義已經很冗餘了,所以,有和沒有這2個關鍵字( function 和 return )將不會有太大差別。
你是否同意這個觀點取決於你自己。雖然我可以在我的專案中想到很多單行閉包的場景,但也有很多多行閉包的情況,從個人角度,我會喜歡這些情況下的簡短語法。
不過還是有希望的:未來可能會增加多行短閉包,但那也是一個單獨的 RFC 。
外部作用域的值
短閉包和普通閉包的另一個顯著特徵是,短閉包不需要用 use 關鍵字就能存取外部作用域的資料。
$modifier = 5; array_map(fn($x) => $x * $modifier, $numbers);
要注意的是,不能修改外部範圍中的變數。因為它屬於值傳遞而不是引用傳遞。這意味著你可以改變短閉包內的 $modifier 變量,但它不會對外部作用域中的 $modifier 變數產生影響。
當然,有一個例外,那就是$this 關鍵字,它的作用與普通閉包中的作用完全相同:
array_map(fn($x) => $x * $this->modifier, $numbers);
發展前景
我已經提到過的多行閉包仍然是將來的一個發展可能。另外一個在我腦海中的想法就是在允許在類別中使用短閉包,例如getters 和setters 函數.
class Post { private $title; fn getTitle() => $this->title; }
總而言之,短閉包是一個很受歡迎的特性,儘管有很多地方需要提高.其中最有可能就是多行閉包了。
以上是php箭頭是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3 Linux新版
SublimeText3 Linux最新版

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中