我的工作包装用于分析数据文件对现有的网的工具。但是,我使用的大型数据文件,这样我不能载整个事情变成记忆,所以我要走过它装在小的区块。现有的网络工具预计数据的风格相似,因($obj->parentnode->childnode->childnode返回一串或一个节点对象的某一类).值得庆幸的是结构类似于XML但语法是奇怪的。我不能把它翻译为一个理智的格式,因为情有可原的情况。因此,我要仿效它的飞行。

当我走过的文件,我不需要分析整个树,就分节点名的流节点。每个分节点的名称和有关的抵消将存储在父母的节点。如果内容的一个分节点需要访问的后父母的节点对象将是克隆的,偏移值,将更新和子的节点对象将开始分析它的内容,直至它认为所请求的子节点。

这问题我是:

  • 克隆的父节目将给儿童的克隆的文件处理。应该有克隆人使用同样的处理和使用fseek跳来跳去的文件,如果需要的话(这是一个很大的,如果)?
  • 我需要关闭该文件?或将垃圾收集在结束脚本执行关闭它?什么危险我的脸如果我没有呢?
  • 我需要创造处理对每个克隆,或者我应该坚持与他们共享一个吗?如果是这样,是否有一个上限制?
  • 有没有办法克隆的目的举行一个参考原始的对象?如果我把柄在目析构也许我不该接近它,如果对象是一个克隆。能够跟踪上可以派上用场,可能的。
有帮助吗?

解决方案

如果你执行 __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;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top