PHP 纯函数

Uri*_*ren 6 php purely-functional

我正在尝试识别纯函数PHP 代码中的。

纯函数是这样一种函数,其中关于函数的以下两个语句都成立:

  • 给定相同的参数值,该函数始终计算相同的结果值。函数结果值不能依赖于随着程序执行的进行或程序的不同执行之间可能发生变化的任何隐藏信息或状态,也不能依赖于来自 I/O 设备的任何外部输入。
  • 结果的评估不会导致任何语义上可观察的副作用或输出,例如可变对象的突变或输出到 I/O 设备。

(来自维基百科的定义

一个 PHP 函数是纯函数是否足够当且仅当

  • 它的所有参数都是按值传递的(没有 &参数列表中)
  • 它不使用对象成员(没有 $this在函数体中)
  • 它不使用全局变量(它不包含 global在函数体中)
  • 它不使用超全局变量(它不包含$_变量)

这些说法是真的吗?我是否缺少任何用例?

907*_*997 4

你错过了很多用例

  • rand()
  • 数据库交互
  • 文件IO
  • static变量
  • 调用其他函数global
  • import/require函数内的语句
  • 具有内部状态的函数,例如ob_get_contents()
  • 改变数组指针

可能有很多事情我没有想到。PHP 具有非常有状态的设计。