PHP new 一个对象什么意思?
今天看官方文档,有个疑问,$obj2=new$obj1;什么意思?有这种写法吗?classTest{staticpublicfunctiongetNew(){return...
今天看官方文档,有个疑问,$obj2 = new $obj1;什么意思?有这种写法吗?class Test{ static public function getNew() { return new static; }}class Child extends Test{}$obj1 = new Test();$obj2 = new $obj1;var_dump($obj1 !== $obj2);
展开
展开全部
$obj2 = new $obj1; 是给$obj2重新分配一个和$obj1一样的内存,这样修改$obj2的时候,$obj1不会被改变
如果直接$obj2 = $obj1; 的话其实是把$obj1的内存地址共享给了$obj2,这样在修改其中一个的时候另一个也会改变
如果直接$obj2 = $obj1; 的话其实是把$obj1的内存地址共享给了$obj2,这样在修改其中一个的时候另一个也会改变
追问
大佬水平不错,能否加个好友,一起学习PHP?
追答
大佬谈不上,只是平时积累了点知识,可以加好友,私聊说吧
补充一下:像字符串,数组,数字这些变量在赋值的时候默认分配新内存,例如
$str1 = 'qwe';
$str2 = $str1;
$str2 = 'asd';
echo $str1.' '.$str2; //qwe asd
也可以指定使用&符号在赋值时共享内存,例如
$str1 = 'qwe';
$str2 = &$str1;
$str2 = 'asd';
echo $str1.' '.$str2; //asd asd
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询