DateTime对象克隆致命错误:在Magento Model中的非对象上调用__clone方法

时间:2015-01-18 04:27:46

标签: php magento

我在使用自定义Magento模型时遇到了一些奇怪的事情。

模型被称为单身并且有效:

尝试克隆对象属性第二时,会导致致命错误。

function someFunction1() {
     $datetime_from = clone $this->from;

}

另一方面,这个功能:

function someFunction2() {
    echo '<pre>'.__FILE__.':'.__LINE__.'<br>';
    var_export(gettype($this->from));
    echo '</pre>';
    $datetime_from = clone $this->from;
}

结果:

  

... \型号\ Data.php:230

     

'对象'

     

     

致命错误:在非对象中调用__clone方法   问:第235行的\ magento \ app \ code \ local \ Tece \ Goals \ Model \ Data.php

2 个答案:

答案 0 :(得分:0)

没关系。

我试图克隆的对象是一个字符串,只是其他变量,其他行号。

最难找到不存在的错误。

答案 1 :(得分:0)

相同的问题:我正在循环中克隆DateTime对象,调试表明它很好,但是克隆仍然失败。事实证明,该变量在后续迭代中被清除,因此克隆失败。

但是,在研究过程中,我发现了Do You Clone the DateTime Objects?

这是要点:

  

从PHP 5.5开始,最好使用DateTimeImmutable对象。它们在创建后就无法修改(它们的行为类似于真实值对象)。在DateTimeInterface中声明的用于修改DateTime对象的方法会自动创建并返回DateTimeImmutable对象的克隆。

那样,根本不需要克隆。