php - $this 的 PHP 自动绑定,是复制还是扩展?
问题描述
当使用在类上下文中定义的匿名 PHP 函数时,文档说“当前类自动绑定到它,使其$this
在函数范围内可用”。
但我有点困惑这意味着什么,这是否意味着匿名函数具有类的副本,或者它现在是类的一部分?那么如果我使用匿名函数对类进行更改,它们会留在定义匿名函数的原始类中吗?
解决方案
$this
PHP中匿名函数内部的变量不是副本,是绑定,所以如果更改$this
匿名函数内部的内容,就会影响父类。
您可以运行以下代码段来检查它:
class Foo
{
private $test = 1;
function __construct()
{
$func = function() {
$this->test = 2;
};
$func();
var_dump($this);
}
};
new Foo();
推荐阅读
- javascript - 在 Squarespace 弹出事件侦听器/触发器之后运行代码
- flutter - 无法读取图像:错误:“未来”类型的值
'不能分配给'文件'类型的变量 - python - 计算具有不同数量的圆的圆交点
- django - 通过字段值检查项目是否存在于数据库中
- rust - 为什么 std::cell::Ref 没有 Hash/PartialEq/Eq 实现
- c# - 自动映射儿童注入数据
- python - 即使值更改,模型字段也不会在管理页面中更新
- python - 如何使用有限差分计算数组的导数?
- javascript - 如何修复 DOM XSS JavaScript Window.location
- java - 错误:指定的编译器合规性为 1.8,但使用了 JRE 15