PHP 中的嵌套函数

在父函数中定义函数时,我们必须先调用父函数,然后子函数才可用。
一旦父函数被调用,子函数将在 PHP 脚本中全局可用,而不仅仅是在父函数中。

如果你仍然想用嵌套函数弄脏你的手,你应该看看下面的例子:

function MyFunc() {
 //The Nested Functions
 function DoThis() {
  return 'Yeah!';
 }
 function DoThat() {
  return 'Nah!';
 }
}
 //Calling MyFunc will define the child-functions
 MyFunc();
 echo DoThis();

我们还可以在父级内部使用嵌套函数:

function MyFunc($content) {
 //The Nested Functions
 function DoThis() {
  return 'Yeah!';
 }
 function DoThat() {
  return 'Nah!';
 }
 //The Main Function Script
 if ($content == 'Yes yes') {
   return DoThis();
 } else {
   return DoThat();
 }
}
 //The Main Script
 $string = 'Yes yes';
 echo MyFunc($string);
PHP 中的嵌套函数

嵌套函数(又名:函数内的函数)在 PHP 中是可能的,有时以匿名函数的形式使用。

也可以在其他函数内部创建命名函数,就像在过程 PHP 中所做的那样;但我不会推荐这个。
一个可能有用的地方是 polyfills,尽管我还没有看到它的实际例子。

嵌套函数的问题在于每次调用函数时都会重新声明它们;这意味着它们对性能的影响很小。
它们还会污染全局范围,因为它们一旦声明就在全局范围内可用;因此,我们可能想了解面向对象的 PHP。

过程 PHP 中的嵌套函数如下所示:

function my_parent_function() {
  say_hallo();
  function say_hallo() {

   echo 'Hallo World!';
   exit();

  }
}
//Call the parent function
my_parent_function();

PHP匿名函数

当我们在函数或者方法中使用匿名函数时,它也是一种嵌套函数。
PHP 中匿名函数的语法类似于 JavaScript 中使用的语法。

匿名函数有很多用途,一个是当你使用 array_walk 函数来“遍历”一个数组时:

$my_array = ['PHP7', 'Scripting']
array_output($my_array);
function array_output($array) {
  array_walk($array, function ($value, $key) {
    echo PHP_EOL . $key . ':' . $value;
  });
}
日期:2020-06-02 22:15:41 来源:oir作者:oir