참조 없이 객체를 복사하는 방법은 무엇입니까?
P粉805922437
2023-08-24 10:51:49
<p>PHP5 OOP 객체는 기본적으로 참조로 전달된다는 사실이 잘 문서화되어 있습니다. 이것이 기본값이라면 참조 없이 복사하는 기본값이 아닌 방법이 있는 것 같은데, 그건 어떻습니까? ? </p>
<pre class="brush:php;toolbar:false;">함수 refObj($object){
foreach($object as &$o){
$o = ''로 변경됩니다' $o;
}
$객체를 반환합니다;
}
$obj = 새로운 StdClass;
$obj->x = 'x';
$obj->y = 'y';
$x = $obj;
print_r($x)
// 객체(stdClass)#1 (3) {
// ["x"]=> 문자열(1) "x"
// ["y"]=> 문자열(1) "y"
// }
// $obj = refObj($obj); // 이렇게 할 필요가 없습니다.
refObj($obj); // $obj는 참조로 전달됩니다.
print_r($x)
// 객체(stdClass)#1 (3) {
// ["x"]=> string(1) "이것은 x로 변경됩니다."
// ["y"]=> string(1) "이것은 y로 변경됩니다."
// }</pre>
<p>이 시점에서는 <code>$x</code>가 원본 <code>$obj</code>일 것으로 예상했지만 물론 그렇지 않습니다. 쉽게 할 수 있는 방법이 있나요? 아니면 이런 코드를 작성해야 하나요</p>
객체를 복사하려면 Object Clone一个>을 사용해야 합니다.
귀하의 예에서 이를 수행하려면:
으아아아객체는
__clone()
定义自己的克隆
동작을 사용할 수 있으며 이로 인해 예상치 못한 동작이 발생할 수 있으므로 이 점을 염두에 두시기 바랍니다.으아악
그러면 다음과 같아야 합니다:
으아악