3

我有一个函数,它通过电子邮件在数据库中查找用户,并返回一个包含他们的 ID、电子邮件和散列密码的结构。但是由于 ColdFusion 缺少 null/nil/none 类型,我无法弄清楚如果用户不存在要返回什么。

我的第一个解决方案是 return false,然后只用于if(user == false)查看用户是否存在,但同时使用==andis时,ColdFusion 将尝试将有效的用户结构转换为布尔值,并在不能时抛出错误。

我的第二个解决方案是return;没有值,但后来我的支票变成了if(isDefined("foo")). 在我看来,这看起来很丑陋,并且使重构有点棘手,因为变量名现在也在字符串中......

在 ColdFusion 中是否有一种干净的方法可以返回“未找到”值?

4

2 回答 2

1

CFisNull()从 CF9 开始,例如:

<cffunction name="getUser">
  <cfargument name="userID">
  <cfquery name="qUser">
    SELECT * FROM users where userID = <cfqueryparam value="#userID#">
  </cfquery>
  <cfif qUser.recordCount>
    <cfreturn {name=qUser.name}>
  </cfif>
</cffunction>

<cfset var user = getUser(1)>
<cfif isNull(user)>
   <!-- user not found -->
<cfelse>
   Welcome #user.name#
</cfif>
于 2013-07-25T21:54:24.260 回答
1

返回空白''false工作正常。

诀窍在于如何处理返回,因为很可能你会做一个if isStruct(result)只要它不是结构,你返回什么都没有关系

于 2013-07-25T21:54:32.263 回答