gpt4 book ai didi

php - 对象分配在 PHP OOP 中没有意义

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

我接受了测试,但我弄错了,但这没有意义:

class myClass
{
public $x;

function myMethod()
{
echo $this->x;
}
}

$a = new myClass();
$a->x = 10;
$b = $a;
$b->x = 20;
$c = clone $b;
$c->x = 30;

$a->myMethod();
$b->myMethod();
$c->myMethod();

我的直觉是 102030 但结果实际上是 202030!!! 10怎么了?!?!不应该单独留下 $a 的变量吗?我认为所有对象都是独立的并且不会被更新,除非它具有由&符号(=&)设置的直接引用?

最佳答案

$b = $a; ,只复制对象引用,而不是对象。

当您使用 clone ,然而,对象确实被复制了,所以 $c = clone $b,创建一个新对象(由 $c 引用)和一个新引用( $c )。

$b =& $a; , 两个符号 $a$b将指向相同的引用,也就是说,即使引用也不会被复制(因此,对 $b 的赋值,比如一个整数,也会影响 $a 的值)。

总结一下,这里有两个间接:从符号到"zval" (在对象引用的情况下)以及从对象引用到对象本身(即,到存储实际对象状态的内存部分)。

关于php - 对象分配在 PHP OOP 中没有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7548990/

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