PHP是否在分配时复制对象?

Jus*_*tin 1 php

PHP在=使用时是复制对象还是仅创建指向已存在对象的新指针?

这些都是一样的吗?

$obj1 = new object(); 
$obj2 = $obj1;

$obj1 = new object(); 
$obj2 = clone $obj1;
Run Code Online (Sandbox Code Playgroud)

lon*_*day 5

在PHP 4(即古代历史)中,对象确实被复制了.这没有帮助的行为.

从PHP 5开始,对象现在通过引用分配,除非它们被克隆.

你可以轻松测试这个:

$obj1 = new object(); 
$obj2 = $obj1;
var_dump($obj1 === $obj2); // bool(true)

$obj1 = new object(); 
$obj2 = clone $obj1;
var_dump($obj1 === $obj2); // bool(false)
Run Code Online (Sandbox Code Playgroud)