我正在开发一个解析器来解析现有Web工具的数据文件。但是,我正在使用大型数据文件,因此我无法将整个内容加载到内存中,所以我必须完成它以小块加载它。现有的Web工具需要类似于SimpleXML的样式的数据($ obj-> parentnode-> childnode-> childnode返回某个字符串或某种节点对象)。值得庆幸的是,结构类似于XML,但语法很奇怪。而且由于情有可原,我不能把它翻译成一种理智的格式。所以我必须动态模仿它。
当我浏览文件时,我不需要解析整个树,只需解析当前节点的子节点名称。每个子节点名称和关联的偏移量将存储在父节点中。如果需要访问子节点的内容,则将克隆父节点对象,更新偏移值,并且子节点对象将开始解析其内容,直到找到所请求的子节点。
我的问题是:
答案 0 :(得分:0)
如果你实现了__clone
方法,你可以在克隆一个对象时做任何你想做的事情,比如设置一个属性flaggin它作为克隆,或者设置一个包含父元素的属性。
修改强>
public function __clone()
{
$clone = clone $this;
$clone->isCloned = true;
$clone->parent = $this;
$clone->resource = $this->resource; // i dont think resources are copied be default
// additional property transference
return $clone;
}