PHP支持一流的功能,这是什么意思

时间:2019-12-11 19:19:06

标签: php function first-class-functions

此语句在php中是什么意思

  

PHP支持一流的功能

任何人都可以简短地解释一下,我在阅读文档时似乎不明白。

我希望得到一个例子。

2 个答案:

答案 0 :(得分:1)

这意味着可以将PHP函数视为变量。它们可以保存,作为参数传递给函数,等等。

例如:

$square = fn(int $a) => $a**2;

echo (fn($func) => $func(3))($square);

答案 1 :(得分:1)

Wikipedia

  

这意味着该语言支持将函数作为参数传递给   其他函数,将它们作为其他函数的值返回,   并将其分配给变量或将其存储在数据结构中。

最初,您可以将函数作为字符串或数组分配给变量:

$aFunction = 'someFunctionName';
$aFunction();
$aMethod = [$object, 'someMethodName'];
$aMethod();

您可能会在旧资料中看到它。它是对函数/方法的间接引用(按其名称)。当前的PHP提供了更好的方法。您可以直接将匿名函数分配给变量:

$aFunction = function(...$arguments) {
  var_dump($arguments);
};
$aFunction();

或在类中实现魔术方法'__invoke()':

class A {
  public function __invoke(...$arguments) {
    var_dump($arguments);
  }
}

$aFunction = new A();
$aFunction(1, 2);

在PHP 7.4中添加了用于简单表达式的快捷功能:

$aFunction = fn(...$arguments) => var_dump($arguments);
$aFunction(1, 2);