gpt4 book ai didi

php - 为什么对象会自动从之前或之后启动的另一个对象继承值?

转载 作者:可可西里 更新时间:2023-11-01 13:23:56 24 4
gpt4 key购买 nike

这里 Student 的类方法和变量也受到影响并出现在其他对象中,即 $obj1,为什么会发生这种情况?

class Student {
public $name;
public $age;
public function callme() {
return 'called';
}
}

$obj = new Student();
$obj1 = $obj;
$obj->name = 'David';
$obj->age = 12;
echo '<pre>';
print_r($obj);
print_r($obj1);
echo $obj1->callme();

输出:

Student Object
(
[name] => David
[age] => 12
)
Student Object
(
[name] => David
[age] => 12
)
called

最佳答案

解释了此行为 here ,当您执行以下操作时:

$obj = new Student();
$obj1 = $obj;

$obj1 实际上是对 $obj 的引用,因此任何修改都将反射(reflect)在原始对象上。如果您需要一个新对象,请再次使用 new 关键字声明一个对象(因为这就是它的用途):

$obj = new Student();
$obj1 = new Student();

(另外,我看到@Wizard 在我写这篇文章的一半时发布了大致相同的内容,但为了举例,我将把它留在这里)

关于php - 为什么对象会自动从之前或之后启动的另一个对象继承值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39228146/

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