gpt4 book ai didi

php - 在 PHP 中设置/替换 $this 变量

转载 作者:行者123 更新时间:2023-12-04 21:06:10 24 4
gpt4 key购买 nike

有没有办法在 PHP 中设置或修改变量 $this?在我的例子中,我需要调用一个匿名函数,其中 $this 引用的类不一定是进行调用的类。

示例:

function test() { 
echo $this->name;
}

$user = new stdclass;
$user->name = "John Doe";

call_user_func(array($user, "test"));

注意:这会产生错误,因为事实上,该函数需要一个包含对象的数组和该对象中存在的方法,而不是全局范围内的任何方法。

最佳答案

为什么不尝试将函数定义设置为接受对象作为参数?例如:

function test($object) {
if (isset($object->name)) // Make sure that the name property you want to reference exists for the class definition of the object you're passing in.
echo $object->name;
}
}

$user = new stdclass;
$user->name = "John Doe";

test($user); // Simply pass the object into the function.

变量 $this 在类定义中使用时,指的是类的对象实例。在类定义之外(或在静态方法定义中),变量 $this 没有特殊含义。当您尝试在 OOP 模式之外使用 $this 时,它会失去意义,并且依赖于 OOP 模式的 call_user_func() 将不会按照您尝试的方式工作。

如果您以非 OOP 方式使用函数(如全局函数),则该函数不绑定(bind)到任何类/对象,应以非 OOP 方式编写(传入数据或使用全局变量) .

关于php - 在 PHP 中设置/替换 $this 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17645491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com