Php 克隆对象应该使用单个文件句柄,还是每个文件句柄都有自己的句柄?

Php 克隆对象应该使用单个文件句柄,还是每个文件句柄都有自己的句柄?,php,clone,fopen,Php,Clone,Fopen,我正在开发一个包装器,它解析现有web工具的数据文件。但是,我使用的是大数据文件,所以我无法将整个内容加载到内存中,所以我必须逐个加载。现有的web工具需要类似于SimpleXML的样式的数据($obj->parentnode->childnode->childnode返回字符串或某种类型的节点对象)。谢天谢地,该结构类似于XML,但语法很奇怪。因为情有可原,我不能把它翻译成一个合理的格式。所以我必须在飞行中模仿它 在浏览文件时,我不需要解析整个树,只需要解析当前节点的子节点名称。每个子节点名称

我正在开发一个包装器,它解析现有web工具的数据文件。但是,我使用的是大数据文件,所以我无法将整个内容加载到内存中,所以我必须逐个加载。现有的web工具需要类似于SimpleXML的样式的数据($obj->parentnode->childnode->childnode返回字符串或某种类型的节点对象)。谢天谢地,该结构类似于XML,但语法很奇怪。因为情有可原,我不能把它翻译成一个合理的格式。所以我必须在飞行中模仿它

在浏览文件时,我不需要解析整个树,只需要解析当前节点的子节点名称。每个子节点名称和关联的偏移量将存储在父节点中。如果需要访问子节点的内容,则将克隆父节点对象,更新偏移量值,子节点对象将开始解析其内容,直到找到请求的子节点

我的问题是:

  • 克隆父节点对象将为子克隆提供文件句柄。所有克隆是否都应该使用相同的句柄,并在需要时使用fseek在文件周围跳转(这是一个相当大的if)
  • 我需要关闭文件吗?或者脚本执行结束时的垃圾回收会关闭它吗?如果我不这样做,我会面临什么样的危险
  • 我是需要为每个克隆创建句柄,还是应该让它们共享一个?如果有,是否有上限
  • 克隆对象是否有方法保存对原始对象的引用?如果我在对象析构函数中关闭句柄,如果对象是克隆,我可能不应该关闭它。而能够向上追踪可能会派上用场

如果您实现了
\u clone
方法,那么在克隆对象时,您可以做任何您想做的事情,比如将属性标记为克隆,或者设置保存父对象的属性

编辑:

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;
}

好的,我把它标记为克隆。但是我怎样才能让它引用原始对象呢$这个->父=?什么?我以为克隆在创建时被克隆调用了?此外,所有代码示例都没有返回克隆。