ColdFusion 调用会话函数

ColdFusion calling session function

我有一个用户对象,我希望它包含在会话变量中并且能够根据需要进行更新。如何调用现有用户对象中的函数来操作现有变量。我找到了调用该函数的方法,但它没有调用现有对象,而是我怀疑它在调用函数之前实例化了一个新对象。

在Application.cfc中:

<cffunction name = "onSessionStart" output="no">
    <cfobject name="session._user" component="user"/>
    <cfscript>
    ...
    session._user.init();
    </cfscript>
</cffunction>

在User.cfc中:

<cffunction name = "init">
    <cfscript>
        variables.attributes.variable1 = 0;
    </cfscript>
</cffunction>

<cffunction name="changeVariable" access="public">
    <cfargument name = "somename">
    variables.attributes.variable1 = arguments.somename;
</cffunction>

稍后在 login.cfm,致电 session._user.changeVariable(2)

如果这不可能,我将最终写入和写入数据库以跟踪用户属性,而不是使用会话变量。

在 onSessionStart 中创建对象并将其设置到会话中。如果您使用的是 CF10+,则可以在 CF9 中使用 new(),而更低的版本则需要使用 createObject().

<cffunction name="onSessionStart">
  <!--- in CF10+ new calls init() automatically --->
  <cfset session._user = new user()> 
  <!--- CF9 or lower --->
  <cfset session._user = createObject('user').init()>
</cffunction>

在login.cfm中简单说一下更新会话变量

<cfset session._user.changeVariable(2)>

我从来没有完全这样做过,所以我不确定它是如何工作的,但通常我会创建 user.cfc 文件并将实例存储在会话中。

<cffunction name="onSessionStart" output="false">
    <cfset session._user = new user()>
</cffunction>

我也会考虑使用框架 and/or ORM 来为您处理这些东西。