php中标识符由什么组成,在PHP中,什么是闭包,为什么它使用“use”标识符?

闭锁很漂亮!它们解决了匿名函数带来的许多问题,并使真正优雅的代码成为可能(至少只要我们谈到php)。

JavaScript程序员总是使用闭包,有时甚至不知道,因为绑定变量没有明确定义-这就是php中的“使用”。

有更好的现实世界的例子比上面的例子。假设您必须按子值对多维数组进行排序,但是关键的变化。<?php     function generateComparisonFunctionForKey($key) {

return function ($left, $right) use ($key) {

if ($left[$key] == $right[$key])

return 0;

else

return ($left[$key] 

};

}

$myArray = array(

array('name' => 'Alex', 'age' => 70),

array('name' => 'Enrico', 'age' => 25)

);

$sortByName = generateComparisonFunctionForKey('name');

$sortByAge  = generateComparisonFunctionForKey('age');

usort($myArray, $sortByName);

usort($myArray, $sortByAge);?>

警告:未经测试的代码(我没有安装php5.3),但应该是这样的。

有一个缺点:如果面对闭包,许多php开发人员可能会感到有些无助。

为了更好地理解闭包的优点,我将给出另一个例子-这次是javascript。问题之一是范围界定和浏览器固有的异步性。特别是,如果说到window.setTimeout();(或间隔)因此,您将一个函数传递给setTimeout,但实际上不能提供任何参数,因为提供参数执行代码!function getFunctionTextInASecond(value) {

return function () {

document.getElementsByName('body')[0].innerHTML = value; // "value" is the bound variable!

}}var textToDisplay = prompt('text to show in a second', 'foo bar');

// this returns a function that sets the bodys innerHTML to the prompted valuevar myFunction = getFunctionTextInASecond(textToDisplay);

window.setTimeout(myFunction, 1000);

myFunction返回带有某种预定义参数的函数!

老实说,自从5.3和匿名函数/闭包之后,我更喜欢php。名称空间可能更重要,但她们不那么性感.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值