PHP5和x27;克隆';工作

PHP5和x27;克隆';工作,php,clone,Php,Clone,编辑:此行为在打开时可复制 我有以下资料: $_SESSION['query_key'] = $_GET['query_key']; print($query_key); Vs 前者打印$query_key的值,而后者不打印任何内容。 克隆的这种奇怪的副作用是什么?您的代码一定做了一些非常奇怪的事情。 用于对象。除非您将对象填充到$\u GET中,否则该代码将导致致命错误(或在较旧的PHP版本中发出警告) @Michael Haren-克隆实际上是对一个对象的浅层复制,也就是说,它复制

编辑:此行为在打开时可复制

我有以下资料:

  $_SESSION['query_key'] = $_GET['query_key'];
  print($query_key);
Vs

前者打印$query_key的值,而后者不打印任何内容。
克隆的这种奇怪的副作用是什么?

您的代码一定做了一些非常奇怪的事情。 用于对象。除非您将对象填充到$\u GET中,否则该代码将导致致命错误(或在较旧的PHP版本中发出警告)


@Michael Haren-克隆实际上是对一个对象的浅层复制,也就是说,它复制所有属性,但是如果一个属性是对另一个对象的引用,它将复制该引用,而不是克隆另一个对象。

您的代码一定做了一些非常奇怪的事情。 用于对象。除非您将对象填充到$\u GET中,否则该代码将导致致命错误(或在较旧的PHP版本中发出警告)


@Michael Haren-克隆实际上是对一个对象的浅层复制,也就是说,它复制所有属性,但是如果一个属性是对另一个对象的引用,它将复制该引用,而不是克隆另一个对象。

我知道这并不能确切回答这个问题,但是根据你对Roborg的评论,我认为这不是解决你在另一个问题()中提到的问题的好办法-你最好禁用register\u globals

只要你这么做

$_SESSION['query_key'] = 'anything'
$query\u key将是对
$\u SESSION['query\u key']
的引用,因此克隆您在其中输入的内容不会有任何区别

编辑


克隆仅适用于对象,因此不能克隆字符串。这将导致致命错误。我认为如果您查看日志或将display_errors设置为“On”,您将得到一个错误,而不是一个空白页

我知道这并没有具体回答问题,但根据您对Roborg的评论,我认为这不是解决您在其他问题中提到的问题的好方法()-您最好禁用register\u globals

只要你这么做

$_SESSION['query_key'] = 'anything'
$query\u key将是对
$\u SESSION['query\u key']
的引用,因此克隆您在其中输入的内容不会有任何区别

编辑


克隆仅适用于对象,因此不能克隆字符串。这将导致致命错误。我想如果您查看日志或将“显示错误”设置为“开”,您将得到一个错误,而不是一个空白页

有关我使用克隆的原因,请参见。有关我使用克隆的原因,请参见,谢谢。感谢High,禁用register\u globals修复了它。。。你的回答没有解释为什么克隆后它是空的。。有什么想法吗?多亏了老天,我们的地球人把它修好了。。。你的回答没有解释为什么克隆后它是空的。。有什么想法吗?