在PHP中如何为匿名函数指定this
时间:2021-04-22
来源:互联网
今天PHP爱好者为您带来关于闭包匿名函数,在JS中有个很典型的问题就是要给它绑定一个 this 作用域,那么PHP中如何为匿名函数指定this呢?希望对大家有所帮助。
在PHP中如何为匿名函数指定this
关于闭包匿名函数,在JS
中有个很典型的问题就是要给它绑定一个 this
作用域。其实这个问题在PHP
中也是存在的,比如下面这段代码:
$func = function($say){
echo $this->name, ':', $say, PHP_EOL;
};
$func('good'); // Fatal error: Uncaught Error: Using $this when not in object context
在这个匿名函数中,我们使用了 $this->name
来获取当前作用域下的 $name
属性,可是,这个 $this
是谁呢?我们并没有定义它,所以这里会直接报错。错误信息是:使用了 $this
但是没有对象上下文,也就是说没有指定 $this 引用的作用域。
1.bindTo() 方法绑定 $this
$func = $func->bindTo($lily, 'Lily');
// $func = $func->bindTo($lily, Lily::class);
// $func = $func->bindTo($lily, $lily);
$func1('cool');
这回就可以正常输出了。 bindTo()
方法是复制一个当前的闭包对象,然后给它绑定 $this
作用域和类作用域。
$lily 参数是一个
object $newthis
参数,也就是给这个复制出来的匿名函数指定$this
。'Lily' 则是绑定一个新的 类作用域 ,它代表一个类型、决定在这个匿名函数中能够调用哪些 私有 和 受保护 的方法
如果不给这个参数,那么我们就不能访问这个 private
的 $name
属性了:
$func1 = $func->bindTo($lily);
$func1('cool2'); // Fatal error: Uncaught Error: Cannot access private property Lily::$name
2.call() 方法绑定 $this
$func->call($lily, 'well'); // Lily:well
以上就是在PHP中如何为匿名函数指定this的详细内容,更多请关注php爱好者其它相关文章!
-
Navigator.userAgent属性详解 时间:2025-07-29
-
HashMap底层实现原理和扩容机制 时间:2025-07-29
-
什么是git命令?git常用基本命令使用详细大全 时间:2025-07-29
-
git clone命令详解(参数、原理、示例、常见问题、注意事项) 时间:2025-07-29
-
Linux tail命令详解(定义、作用、用法) 时间:2025-07-29
-
Python中strip()函数和split()函数用法和区别 时间:2025-07-29
今日更新
-
Linea 即将 TGE,Etherex 能否打响 Linea 发币前的第一枪?
阅读:18
-
解读香港稳定币申请指引:预计明年初发放首批牌照,持有人需完成身分认证
阅读:18
-
以太坊因19亿美元资金流入及ETF乐观情绪飙升,贝莱德和SharpLink双双加码
阅读:18
-
黄金、比特币和宝可梦卡,谁才是这个时代的「完美抵押品」?
阅读:18
-
Solana 僅剩表面繁榮?當代幣上漲僅靠幕後操縱,鏈上週期或已走向盡頭
阅读:18
-
LINEA代币经济学:ETH Gas占85%,生态系统占15%,资金库占15%
阅读:18
-
香港《穩定幣條例》8/1生效、港股爆衝遭金管局警告:小心泡沫化
阅读:18
-
雷·达里奥建议配置15%的比特币或黄金以应对即将到来的局势。
阅读:18
-
ZachXBT调查导致推特黑客被定罪
阅读:18
-
7月31日XRP价格预测
阅读:18