0

サイト Web の新規開発において、非常に奇妙なケースがあります。(カスタム モジュールを使用して) ブロックを作成し、node_load を作成しました。これですべて問題ありません。ノードはロードされ、ブロックは表示されます。しかし、ノードの nid を変更し (例: set 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 に答える