您好,登錄后才能下訂單哦!
php中如何使用匿名函數(shù),很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
匿名函數(shù)的提出
在匿名函數(shù)出現(xiàn)之前,所有的函數(shù)都需要先命名才能使用
有的時候函數(shù)可能只需要使用一次,這時候使用匿名函數(shù)會使得代碼更加簡潔直觀,同時也避免了函數(shù)在其他地方被使用
(免費學習視頻教程分享:php視頻教程)
匿名函數(shù)的定義與使用
PHP 將閉包和匿名函數(shù)視為同等概念(本文統(tǒng)稱為匿名函數(shù)),本質上都是偽裝成函數(shù)的對象。
匿名函數(shù)的本質是對象,因此跟對象一樣可將匿名函數(shù)賦值給某一變量
所有的匿名函數(shù)都是 Closure 對象的實例
對象并沒有什么父作用域可言,所以需要使用 use 來手動聲明使用的變量
如果要讓匿名函數(shù)中的變量生效,需要使用引用傳值
從 PHP 5.4 開始,在類里面使用匿名函數(shù)時,匿名函數(shù)的 $this 將自動綁定到當前類
如果不想讓自動綁定生效,可使用靜態(tài)匿名函數(shù)
匿名函數(shù)的本質
匿名函數(shù)的本質是 Closure 對象,包括了以下五個方法
__construct - 防止匿名函數(shù)被實例化
Closure::bindTo - 復制當前匿名函數(shù)對象,綁定指定的 $this 對象和類作用域。通俗的說,就是手動將匿名函數(shù)與指定對象綁定,利用這點,可以為擴展對象的功能。
Closure::bind - bindTo 方法的靜態(tài)版本,有兩種用法:
用法一:實現(xiàn)與 bindTo 方法同樣的效果
用法二:將匿名函數(shù)與類(而不是對象)綁定,記得要將第二個參數(shù)設置為 null
call - PHP 7 新增的 call 方法可以實現(xiàn)綁定并調用匿名函數(shù),除了語法更加簡潔外,性能也更高
fromCallable - 將給定的 callable 函數(shù)轉化成匿名函數(shù)
fromCallable 等價于
這里有一點需要特別注意的是,無論是 fromCallable 轉化成的閉包,還是使用反射得到的閉包,在使用 bindTo 時,如果第二個參數(shù)指定綁定類,會報錯
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。