我在使用自定义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
答案 0 :(得分:0)
没关系。
我试图克隆的对象是一个字符串,只是其他变量,其他行号。
最难找到不存在的错误。
答案 1 :(得分:0)
相同的问题:我正在循环中克隆DateTime
对象,调试表明它很好,但是克隆仍然失败。事实证明,该变量在后续迭代中被清除,因此克隆失败。
但是,在研究过程中,我发现了Do You Clone the DateTime Objects?。
这是要点:
从PHP 5.5开始,最好使用DateTimeImmutable对象。它们在创建后就无法修改(它们的行为类似于真实值对象)。在DateTimeInterface中声明的用于修改DateTime对象的方法会自动创建并返回DateTimeImmutable对象的克隆。
那样,根本不需要克隆。