当前位置: 首页 > 面试题库 >

什么是PHP嵌套函数?

易成双
2023-03-14
问题内容

在JavaScript中,嵌套函数非常有用:闭包,私有方法以及您拥有的东西。

什么是嵌套PHP函数?有人使用它们吗?

这是我做的小调查

<?php
function outer( $msg ) {
    function inner( $msg ) {
        echo 'inner: '.$msg.' ';
    }
    echo 'outer: '.$msg.' ';
    inner( $msg );
}

inner( 'test1' );  // Fatal error:  Call to undefined function inner()
outer( 'test2' );  // outer: test2 inner: test2
inner( 'test3' );  // inner: test3
outer( 'test4' );  // Fatal error:  Cannot redeclare inner()

问题答案:

基本上没有,我一直将其视为解析器的副作用。

伊兰·加珀林(Eran
Galperin)误认为这些功能是某种私有的,只是outer()在运行之前才声明它们。它们也不是私有范围的,尽管确实延迟了,但它们确实污染了全球范围。作为回调,外部回调仍然只能被调用一次。我仍然看不到将其应用于很可能多次调用别名的数组有什么帮助。

唯一的“现实世界”的例子,我能挖出个是这个只能运行一次,并且可以IMO改写清洁。

我唯一能想到的是让模块调用[name] _include方法,该方法在全局空间中设置多个嵌套方法,并与

if (!function_exists ('somefunc')) {
  function somefunc() { }
}

检查。

PHP的OOP显然是一个更好的选择:)



 类似资料:
  • 问题内容: 什么是静态嵌套类?静态和非静态嵌套类有什么区别? 问题答案: 静态内部类是嵌套在具有修饰符的另一个类中的类。除了可以访问在其内部定义的类的私有成员之外,它与顶级类几乎相同。 类是静态内部类。类是一个非静态的内部类。两者之间的区别是,非静态内部类的实例被永久连接到的实例-你不能创建一个没有。不过,您可以独立创建对象。 中的代码,并且都可以访问x; 不允许使用其他代码。

  • 问题内容: 在Java中,嵌套类是什么,它们做什么? 问题答案: 它们只是其他类中的类。它们使类的层次结构成为可能,如果您将它们设为私有,则这是一种使用它们封装不在类外部公开的数据的便捷方法。Sun有一个简短的教程关于他们

  • 问题内容: 我已经在Python中看到并使用了嵌套函数,它们与闭包的定义匹配。那么为什么叫他们而不是? 嵌套函数不是因为外部世界不使用闭包吗? 更新:我正在阅读有关闭包的知识,这让我开始思考关于Python的这个概念。我搜索并找到某人在下面的评论中提到的文章,但是我无法完全理解该文章中的解释,所以这就是为什么我问这个问题。 问题答案: 当函数可以从完成其执行的封闭范围访问局部变量时,就会发生关闭。

  • 我一直在玩()。我举了一些例子,我有一个问题。 该操作与双函数嵌套的次数是否有限制?它是否像嵌套一个假设的方法一样简单? e、 g.三个嵌套的 四个嵌套的 不断地...嵌套的数量可以不断增加,我用嵌套功能测试了十多次。 我没有确切的要求,需要多少嵌套。。。但我很好奇,这样的鸟巢能做多少?

  • 问题内容: 我只是在学习一些Swift,并且遇到了有关嵌套函数的部分: 函数可以嵌套。嵌套函数可以访问在外部函数中声明的变量。您可以使用嵌套函数将代码组织为长函数或复杂函数。 从这里 因此,如果声称的好处是“组织代码”,那么为什么不只在外部函数之外单独拥有嵌套函数?在我看来,这似乎更有条理。 我能看到的唯一好处是您“可以访问在外部函数中声明的变量”,但是与具有嵌套函数的混乱相比,这似乎微不足道。

  • 问题内容: 我得到了一段我不明白的javascript代码: 如何在另一个函数中定义一个函数?我们可以从my()函数外部调用pad2()吗? 请给它一些照明。谢谢 问题答案: 函数是JavaScript中变量的另一种类型(当然有些细微差别)。在另一个函数中创建一个函数会更改该函数的作用域,就像改变变量的作用域一样。这对于与闭包一起使用以减少总体全局名称空间污染尤其重要。 除非已将另一个函数中定义的