Spi*_*pir 6 php clone stdclass
我正在尝试克隆一个具有attribut的stdClass对象,这是一个DateTime.但它失败了.看起来克隆不起作用.我应该编写自己的__clone()方法吗?这有什么不对?
代码:
$object = new stdClass;
$object->date = new DateTime();
var_dump($object->date);
$cloned = clone($object);
$object->date->modify('+1 day');
var_dump($cloned->date);
Run Code Online (Sandbox Code Playgroud)
输出:
object DateTime (
->date = string (19) '2013-04-11 11:54:00'
->timezone_type = int 3
->timezone = string (13) 'Europe/Berlin'
object DateTime (
->date = string (19) '2013-04-12 11:54:00'
->timezone_type = int 3
->timezone = string (13) 'Europe/Berlin'
Run Code Online (Sandbox Code Playgroud)
如何通过强制链接"克隆"一个php POSCO(Plain Old StdClass对象):
$cloneObj = (object) (array) $myPOSCO;
var_dump($cloneObj == $myPOSCO); // true
var_dump($cloneObj === $myPOSCO); // false
Run Code Online (Sandbox Code Playgroud)
克隆对象时,所有对象属性都会简单地复制到该对象的新实例。实际上是这样的:
$cloned = new stdClass;
$cloned->date = $object->date;
Run Code Online (Sandbox Code Playgroud)
您可能知道,将一个对象分配给另一个变量不会复制该对象;而是将其分配给另一个变量。仍然只有一个对象,现在有两个对其的引用。
要深度克隆对象,您需要使用该__clone方法并手动实现clone其任何子对象来实现自定义类。
| 归档时间: |
|
| 查看次数: |
5118 次 |
| 最近记录: |