代码之家  ›  专栏  ›  技术社区  ›  Abulurd

PHP是否支持Arrow函数语法?

  •  25
  • Abulurd  · 技术社区  · 6 年前

    在抱怨编写关键字的繁杂任务后 function 我一遍又一遍地问别人一个更简单的方法。该人士表示,PHP将具有类似于es6的箭头函数语法。

    const foo = (x, y) => {
        return x + y;
    };

    当我继续研究这个问题时,我在网上找不到很多例子。

    请有能力的人对此进行解释好吗?

    在这一点上,我还对如何将其融入PHP的OOP方面非常感兴趣。

    3 回复  |  直到 6 年前
        1
  •  31
  •   Bill Karwin    5 年前

    2018年2月的原始答复:

    这似乎是中描述的语法 https://wiki.php.net/rfc/arrow_functions . 它确实有一个实验性的实现。

    在arrow functions提案中,提到它是“短闭包”提案的替代方案, https://wiki.php.net/rfc/short_closures

    截至2018年2月,PHP的当前版本为7.1.4/7.2.2。

    我找不到任何一项提案是否已获得批准的确认书。前者处于“讨论中”状态,后者“拒绝/撤回,支持 http://wiki.php.net/rfc/arrow_functions “。我认为现在就知道它是否会被任何未来版本的PHP采用还为时过早。


    2019年12月更新:

    该功能已在PHP 7.4中发布,据 https://www.php.net/manual/en/migration74.new-features.php

    箭头函数提供了用于定义函数的简写语法 由值范围绑定隐式。

    <?php
    $factor = 10;
    $nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);
    

    但是PHP手册页面中关于的用法尚未更新 Anonymous Functions

    下面是一个详细介绍的博客: https://stitcher.io/blog/short-closures-in-php

        2
  •  12
  •   JR Stream    5 年前
        3
  •  6
  •   Đorđe Zeljić    5 年前

    基于RFC PHP 7.4 代码可能看起来像

    $users->map(
        fn($user) => $user->first_name.' '.$user->last_name
    );
    

    而不是

    $users->map(function($user) {
        return $user->first_name.' '.$user->last_name;
    });