どれくらい考えても検索しても、
私は意図的にtry/catchを誤って使用することでこれを解決できたので、構造をループして、各アイテムからオブジェクトを作成してみた私はそれがデフォルトの変数に行くことができますので、私は、セッションを使用して私のケースでは、別のスコープに格納しなければならなかった無限の数の子供を持つ構造
EDIT:これは私はそれがなかったと思った何をしません、以下を参照してください
<cfset session.varSnapShot = StructNew()>
<cfset loopList = StructKeyList(variables)>
<cfloop from="1" to="#ListLen(loopList)#" index="i">
<cftry>
<cfobject name="x#i#" component="#variables[ListGetAt(loopList,i)]#">
<cfcatch>
<cfset session.varSnapShot[ListGetAt(loopList,i)]= variables[ListGetAt(loopList,i)]>
</cfcatch>
</cftry>
</cfloop>
EDIT:上記ので、実際に深いコピー(感謝リー)を行いません。私はこの思い付いた:
<cfloop from="1" to="#ListLen(loopList)#" index="i">
<cfset metaData = GetMetaData(variables[ListGetAt(loopList,i)])>
<cfif isStruct(metaData) AND isDefined("metaData.type") AND metaData.type EQ "component">
<cfelse>
<cfset session.varSnapShot[ListGetAt(loopList,i)]= duplicate(variables[ListGetAt(loopList,i)])>
</cfif>
</cfloop>
これはディープコピーを作成しますが、コンポーネントがオブジェクトの最初のレベルより下にある場合でも問題になります。私は再帰的な方法を作りたかったのですが、それは金曜日の1時間半の終了時間です。私は代わりにパブで脳細胞を殺し、おそらく月曜日に私が忘れなければ再帰的方法でこれを更新するでしょう。
私はこのアプローチについて、RSSの質問を一度読んだと思っています:) – Sergii
Great minds;)(それはあなたの回答のいくつかで私に起こりました)。最終結果は、私が最初に思ったよりも少しシンプルでした。再帰の良さに感謝します。 – Leigh
Memento Design Patternを見てください。オブジェクトにヒットすると、Mementoを呼び出して構造体として、そのオブジェクトの現在の状態のすべてのプロパティを返す傾向があります。セッション状態のようなものをデバッグするのに最適な方法でしたし、物理的なオブジェクトをダンプしないことを意味しました。 –