导入
PHP 函数
了解 PHP 中的函数及其类型。
PHP中的函数
函数是函数式编程的核心。函数是输入与输出之间的关系。函数的arity(参数个数)是指函数接受的参数数量,而函数的签名则指定了返回类型和参数类型。最后,函数的定义封装了函数的具体逻辑。以下是一个数学上定义的函数:
它的参数个数为1,作用是将参数 的值加1。参数 实际上是一个占位符,代表函数定义中通过加法运算 所表达的一般性变换。由于不同的 值会产生不同的结果,因此函数提供了局部计算能力。每个结果都唯一对应一个输入。例如:
PHP中的函数形式多样,其灵活性与变量相当,具有以下特征:
- 使用
function关键字。 - 两组括号:
- 圆括号
()用于参数列表。 - 花括号
{}用于函数体定义。
- 圆括号
- 返回类型(自 PHP 7.0 起支持)。
PHP中的函数类型
PHP 中的不同函数类型包括:
- 命名函数
- 匿名函数
- 闭包
- 方法
命名函数
PHP中的命名函数(如下面的例子所示)与其他编程语言中的函数基本相同(仅存在少量语法差异)。它们通常由一个任意名称构成,位于 function 关键字和参数列表之间,后接包含状态转换表达式的函数体。
1
2匿名函数
3另一方面,匿名函数、无名函数或称为lambda 函数,会创建 PHP Closure 类的实例,通常被赋值给变量或嵌入到其他数据结构中。作为回调函数非常有用,匿名函数具有与命名函数相同的语法特性,只是没有显式的函数名称。
4 $x - $y;
5
6echo $subtract(3, 2); // 结果为 1
7闭包
8闭包与匿名函数密切相关。闭包是一种可以访问外部作用域变量的匿名函数。当需要在匿名函数内部与外部定义的变量进行交互时,闭包特别有用。use 关键字提供了对外部状态的访问权限。然而,有些人认为这种方式增加了不必要的冗余。
9
10类方法
11PHP 中最后一种函数类型是封装在类作用域内的类方法。类在函数式编程中具有重要意义。
12x = $x;
13 $this->y = $y;
14 }
15
16 public function add() : int
17 {
18 return $this->x + $this->y;
19 }
20}
21
22$op = new Operation(1, 2);
23
24var_dump($op->add()); // 结果为 "int(3)"
25上述代码片段中未包含设置器(setters)。因为设置器会使函数变得不纯,因此今后应摒弃类中使用设置器的概念。