2

最近、cfcコンポーネントを使用してユーザー情報をSession変数に格納し始めました。以前は、Session.UserId、Session.Firstname、Session.Lastnameなどの個別の変数としてそれらをSessionに格納していました。この新しいコンポーネントは、必要な値ごとにgetメソッド(つまり、Session.User.getUserId()、Session.User.GetName()など)を備えたコンポーネントにすべてをうまくまとめています。

しかし、デバッグのためにセッション変数のcfdumpを実行すると、オブジェクト構造のメタデータが表示されます。コンポーネントのgetメソッドによって返される値を確認したいのですが。cfdumpを使用して、オブジェクトのメタデータとともに関数値を出力する方法はありますか?

4

3 に答える 3

6

<cfdump>魔法ではありません。与えた値を出力するだけです。CFCインスタンスはこれらの値を反映するパブリックプロパティを公開しないため、<cfdump>それらが何であるかを知る方法がありません。

以前のセッションスコープを反映するすべてのプライベートプロパティを1回のヒットで抽出する必要がある場合は、そのためのメソッドを作成してから、それ<cfdump> 作成する必要があります。例えば:

public struct function getVariables(){
    return  variables;
}

variables.sessionStuffさらに必要な値を(たとえば(など)に抽象化する場合は、variables.sessionStuff.userIdを返すvariables.sessionStuff.nameメソッドを記述します。getSessionStuff()variables.sessionStuff

于 2013-03-25T04:18:00.020 に答える
3

cfdumpを使用して、オブジェクトのメタデータとともに関数値を出力する方法はありますか?

はい、アクセサーを使用してください。

<cfcomponent accessors="true">
    <cfproperty name="userID">
    <cfproperty name="firstName">
    <cfproperty name="lastName">
</cfcomponent>

<cfdump>このオブジェクトを試してみると、プロパティ値が表示されます。

于 2013-03-25T04:53:17.497 に答える
0

Adobeがこれを引き続きサポートするかどうかはわかりませんが、ColdFusion 8では、THISスコープ内の変数は自動的にパブリックと見なされ(したがって、で表示されますcfdump)、VARIABLESスコープを明示的に使用すると、プライベートと見なされます(したがって、では非表示になりますcfdump)。このようにして、コンポーネントにコンポーネント参照を保持するときにスタックオーバーフローが発生するのを回避することもできます(cfdumpを使用して、それらを再帰的に解決し、無限ループで終了します)。しかし、繰り返しになりますが、これはおそらくColdFusion9以降で修正されました。

于 2013-03-26T09:54:29.297 に答える