在函数中创建函数有什么用?

时间:2010-02-16 05:35:21

标签: php function methods

我知道可以在另一个函数中创建一个函数。为什么人们可能需要在现实生活中这样做? (PHP)

function someFunction($var)  
{  
    function anotherFunction()
    {
        return M_PI;
    }

    return anotherFunction();
}

3 个答案:

答案 0 :(得分:4)

你真正想要在另一个函数中定义函数的唯一时间是你不希望在调用外部函数之前可以使用任何内部函数。

function load_my_library() {
  ...

  function unload_my_library() {
  }
}

您需要(或想要)unload_my_library的唯一时间是在加载库之后。

答案 1 :(得分:1)

通常不应使用嵌套函数。类和公共/私有方法可以更清晰地解决相同类型的问题。

但是,函数生成函数很有用:

<?php
# requires php 5.3+
function make_adder($a)
{
  return function($b) use($a) {
    return $a + $b;
  };
}

$plus_one = make_adder(1);
$plus_fortytwo = make_adder(42);

echo $plus_one(3)."\n";       // 4
echo $plus_fortytwo(10)."\n"; // 52

?>

这个例子既拙劣又愚蠢,但这类事情对于生成排序例程等所使用的函数非常有用。

答案 2 :(得分:0)

我猜这里,但我相信它用于将函数传递给另一个函数执行。例如,调用搜索功能,您可以在其中指定回调函数以执行搜索顺序比较。这将允许您将比较器封装在外部函数中。