【问题标题】:Can't clone an object in php simple dom parser无法在 php 简单 dom 解析器中克隆对象
【发布时间】:2011-04-16 10:26:52
【问题描述】:

首先,我想确保以下是测试和克隆对象的正确方法。我正在使用 PHP Simple HTML DOM Parser。

$page = 'www.google.ca';
$html = file_get_html($page);

$test = clone $html;

$test->find('title',0)->innertext = 'changed title';

echo $html->find('title',0)->innertext;
echo $test->find('title',0)->innertext;

现在也许我做错了,但这似乎并没有将 $html 克隆到 $test。两者都将输出“更改的标题”。

所以我的问题是,

  1. 我的克隆是否正确?
  2. 还有其他方法可以在 PHP 中克隆对象吗?

谢谢大家

【问题讨论】:

  • clone 只执行浅拷贝。可能实际的 DOM 只是 $html 的一个属性(另一个对象)。

标签: php parsing clone


【解决方案1】:

文档是这样说的:

当一个对象被克隆时,PHP 5 将对该对象的所有属性执行一个浅拷贝。任何引用其他变量的属性都将保持引用。

所以也许 .innertext 引用另一个对象,它是一个引用。

你试过$test = $html;吗?

【讨论】:

  • 我一开始确实尝试过,但是对一个所做的任何更改都是对另一个所做的。我确实想出了(我认为)如何修复它,我将对象解析为字符串并使用类自己的函数将其转换回对象......$test = str_get_html($html->outertext);
猜你喜欢
  • 2023-04-10
  • 1970-01-01
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多