PHP中箭頭函數的實例詳解

coldplay.xixi
發布: 2023-04-09 06:28:01
轉載
3416 人瀏覽過

PHP中箭頭函數的實例詳解

##稱為箭頭函數的短閉包是

PHP7.4

#稱為箭頭函數的短閉包是
PHP7.4

#已帶來的期待已久的功能之一。它是由Nikita Popov、Levi Morrison 和Bob Weinand 提出的,你可以在此處閱讀原始RFC

相關學習推薦:
PHP程式設計從入門到精通

#摘自Doctrine DBAL 的快速範例

    //老办法
    $this->existingSchemaPaths = array_filter($paths, function ($v) use ($names) {
        return in_array($v, $names);
    });
    
    // 使用箭头函数的新方法
    $this->existingSchemaPaths = array_filter($paths, fn($v) => in_array($v, $names));
    登入後複製
  1. 讓我們來看看規則吧
  2. fn
  3.  是關鍵字,而不是保留的函數名稱。
  4. 它只能有一個表達式,那就是 return 語句。 不需要使用rereturn
  5. use關鍵字。
  6. $this
  7.  變量,作用域和 LSB 作用域會自動綁定。
  8. 你可以鍵入提示參數和回傳類型。 你甚至可以使用引用&
  9. 和 來展開運算元 
...

幾個範例
    //作用域示例
    $discount = 5;
    $items = array_map(fn($item) => $item - $discount, $items);
    
    //类型提示
    $users = array_map(fn(User $user): int => $user->id, $users);
    
    //展开操作符
    function complement(callable $f) {
        return fn(...$args) => !$f(...$args);
    }
    
    //嵌套
    $z = 1;
    $fn = fn($x) => fn($y) => $x * $y + $z;
    
    //有效的函数签名
    fn(array $x) => $x;
    fn(): int => $x;
    fn($x = 42) => $x;
    fn(&$x) => $x;
    fn&($x) => $x;
    fn($x, ...$rest) => $rest;
    登入後複製
  1. 未來範圍
  2. 多行箭頭函數

允許對類別內的函數使用箭頭函數。

    //现今
    class Test {
        public function method() {
            $fn = fn() => var_dump($this);
            $fn(); // object(Test)#1 { ... }
    
            $fn = static fn() => var_dump($this);
            $fn(); // Error: Using $this when not in object context
        }
    }
    
    //也许在未来的某一天
    class Test {
        private $foo;
        private $bar;
    
        fn getFoo() => $this->foo;
        fn getBar() => $this->bar;
    }
    登入後複製
  1. 我最喜歡的要點
  2. 回呼可以更短
  3. 不需要
use
關鍵字便問變數。

讓我知道你對這些更新有什麼看法,你最喜歡的收穫是什麼?

######感謝閱讀。 ###

以上是PHP中箭頭函數的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:learnku.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!