Drupal 7:在节点加载后更改nid

Drupal 7:在节点加载后更改nid,drupal,drupal-7,Drupal,Drupal 7,我有一个非常奇怪的例子,关于网站的新开发。我制作了一个块(带有一个自定义模块)并加载了一个节点。这里一切正常,节点加载,块显示。但是,如果我更改了节点的nid(例如设置null),而不做任何其他事情(没有节点保存,没有函数调用,没有这个对象),我会注意到不同的模块(比如3或4个模块)。我知道这只是注意,但我会理解为什么改变变量这一简单的事实从来没有使用过,会触发一些错误。。。。。例如: $tmp = node_load(arg(1)); $tmp->nid=null; =>错误(在Dif

我有一个非常奇怪的例子,关于网站的新开发。我制作了一个块(带有一个自定义模块)并加载了一个节点。这里一切正常,节点加载,块显示。但是,如果我更改了节点的nid(例如设置null),而不做任何其他事情(没有节点保存,没有函数调用,没有这个对象),我会注意到不同的模块(比如3或4个模块)。我知道这只是注意,但我会理解为什么改变变量这一简单的事实从来没有使用过,会触发一些错误。。。。。例如:

$tmp = node_load(arg(1));
$tmp->nid=null;
=>错误(在Different name函数中大量“尝试获取…”中非对象的属性)

=>错误(在Different name函数中大量“尝试获取…”中非对象的属性)


=>一切正常

最后,如果是引用对象php的组合,我们必须对对象应用方法来制作副本,否则对象将是引用

您显示的引用对象后面的代码是什么?为什么要将临时变量的节点ID设置为
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;
}