1
71
PHP将在5.3中支持本机闭包。当您想要一个只用于一些小的、特定用途的本地函数时,闭包是很好的。这个 RFC for closures 举个好例子:
这样可以定义
它使事情井然有序。注意函数本身没有名称,它只是被定义和分配为对
但请记住,您必须等待php 5.3:)
您还可以使用关键字将其作用域之外的变量访问到一个闭包中。
这里有一个很好的解释 What are php lambdas and closures |
2
15
当您将来需要一个函数来执行您现在决定的任务时。
例如,如果您读取一个配置文件,并且其中一个参数告诉您
可以在中创建闭包(例如)
一个很好的假设例子:
|
3
15
除了技术细节之外,闭包是一种称为面向函数编程的编程风格的基本前提。闭包大致用于与在面向对象编程中使用对象相同的事情;它将数据(变量)与一些代码(函数)绑定在一起,然后您可以将这些代码传递到其他地方。因此,它们会影响你编写程序的方式,或者——如果你不改变你编写程序的方式——它们根本没有任何影响。 在PHP的上下文中,它们有点奇怪,因为PHP已经非常重视基于类的、面向对象的范式以及旧的过程范式。通常,具有闭包的语言具有完整的词汇范围。为了保持向后兼容性,PHP不会得到这样的结果,所以这意味着闭包在这里与其他语言有点不同。我想我们还没弄清楚它们将如何使用。 |
4
10
我喜欢特罗埃尔斯基的文章提供的上下文。当我想在PHP中做丹·乌迪的例子时,我使用了OO策略模式。在我看来,这比引入一个新的全局函数要好得多,它的行为是在运行时确定的。 http://en.wikipedia.org/wiki/Strategy_pattern 您还可以使用一个变量来调用函数和方法,该变量在PHP中保存方法名,这很好。丹的另一个例子是:
当然,如果你想让它在任何地方都可用,你可以让一切都是静态的… |
5
2
闭包基本上是在一个上下文中编写定义,但在另一个上下文中运行的函数。javascript在理解这些方面帮助了我很多,因为它们在各地的javascript中都被使用。 在PHP中,由于函数内部的“全局”(或“外部”)变量的范围和可访问性不同,它们不如在JavaScript中有效。然而,从php 5.4开始,闭包可以在对象内部运行时访问$this对象,这使得它们更加有效。 这就是闭包的含义,它应该足以理解上面写的内容。 这意味着应该可以在某个地方编写函数定义,并在函数定义中使用$this变量,然后将函数定义赋给变量(其他人已经给出了语法示例),然后将该变量传递给对象并在对象上下文中调用它,然后函数可以访问和操作通过$this的对象就好像它只是它的另一个方法,而实际上它并没有在该对象的类定义中定义,而是在其他地方定义。 如果不是很清楚,那么别担心,一旦你开始使用它们,它就会变得清晰。 |
6
0
下面是PHP中闭包的示例
输出:
|
Jacco · 未能格式化我的日期以在php中正确工作 1 年前 |
jay ram · 如何在URL核心php中从API获取JSON? 1 年前 |
Ishwarya A · php电子表格在浏览器中显示多张excel 1 年前 |