0

我在网站网站的新开发中有一个非常奇怪的案例。我制作了一个块(带有自定义模块)并制作了一个 node_load。这里一切正常,节点加载,块显示。但是如果我更改节点的 nid(例如设置 null)并且什么都不做(没有 node_save,没有函数调用,没有这个对象),我会注意到不同的模块(比如 3 或 4 个模块)。我知道这只是通知,但我会理解为什么永远不会使用更改变量的简单事实,会触发一些错误.....示例:

$tmp = node_load(arg(1));
$tmp->nid=null;

=> 错误(不同名称函数中有很多“试图在...中获取非对象的属性”)

$tmp = node_load(arg(1));
$node=$tmp;
$node->nid=null;

=> 错误(不同名称函数中有很多“试图在...中获取非对象的属性”)

$tmp = node_load(arg(1));
$node = new stdClass();
//Copy via une boucle sinon on a des erreurs.
foreach ($tmp as $key => $value) {
  if ($key != 'nid') $node->{$key} = $value;
}

=> 一切正常

4

1 回答 1

0

好的,最后它是引用对象php的组成部分,我们必须在对象上应用Clone php方法进行复制,否则该对象将被引用

于 2012-12-03T12:15:52.287 回答