gpt4 book ai didi

php - 嵌套 PHP 函数 : to what purpose?

转载 作者:可可西里 更新时间:2023-11-01 13:11:40 24 4
gpt4 key购买 nike

为什么 PHP 允许嵌套函数?

<?php
function foo() {
function bar() {
return "bar";
}
return "foo";
}
print foo();
print bar();

.. 是有效的 PHP。

但是:

  1. 为什么需要嵌套?
  2. 即使是这样,为什么我可以从任何地方调用 bar(而不是,例如,仅使用 foo() 或通过 foo.bar() 等)。

我今天遇到了这个,因为我在某处忘记了一个右括号,而且还有一个太多了。该代码是有效的,没有抛出任何错误;但这一切开始变得非常奇怪。函数没有被声明,回调变得疯狂等等。这是一项功能吗?如果是,目的是什么?还是一些特质?

回答:评论者指出这是What are php nested functions for副本 .

最佳答案

注意这里的顺序很重要;在您的示例中,您不能在调用 foo() 之前调用 bar()。这里的逻辑似乎是 foo() 的执行定义了 bar() 并将其置于全局范围内,但由于作用域的原因,它没有在 foo() 的执行之前定义。

这里使用的是函数重载的原始形式;您可以让 bar() 函数根据声明它的 foo() 版本执行不同的操作,当然假设每个不同版本的 foo() 确实定义了一个 bar() 函数。

关于php - 嵌套 PHP 函数 : to what purpose?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com