gpt4 book ai didi

php - PHP 中的对象赋值

转载 作者:可可西里 更新时间:2023-11-01 01:03:48 27 4
gpt4 key购买 nike

我是一名 PHP 学习者。请帮助我处理以下 PHP OOP 代码:

class x{}
$x = new x;
$x->name = "Chandan";

class y extends x {} // Inheritance
$y = new y;

var_dump($x); // object X; Shows Name property
var_dump($y); // object y; Empty

$y = $x;
var_dump($x); // object X; name = chandan
var_dump($y); // object X; name = chandan

$x->name = "Debasis";
var_dump($x); // object X; name = debasis
var_dump($y); // object X; name = debasis

问题:

  1. 当我们说 $x->name = "Chandan";它会创建公共(public)属性吗?在 C++ 中从未见过这样的赋值。

  2. 对 $x->name 的更改也反射(reflect)在 $y 对象中.. 为什么? $y = $x 应该创建 $x 的副本。

最佳答案

如果要创建动态对象:

$obj = new STDClass(); //Just a simple container, pretty much like array
$obj->anyStuff = "string" ; //Declare some public variables outside the class.

否则,您必须在类中显式声明变量。

此外,对象总是通过引用传递(或赋值),因为$obj 实际上不是一个对象,它只是一个引用,一个指向它的链接。对象本身包含在内存中。

$another = $obj ; 只会创建对同一对象的另一个引用。

要克隆对象,您必须使用:$clone = clone $obj;

您还可以定义一个魔术方法 __clone(),它可以在克隆对象时执行。

更多信息 http://php.net/manual/en/language.oop5.cloning.php

关于php - PHP 中的对象赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16187020/

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