这个ColdFusion声明中的#是什么意思?

时间:2011-07-05 13:46:02

标签: coldfusion

我试图更好地理解coldfusion以解决一个小问题。但对于我的生活,我找不到这意味着什么

<cfoutput query="manufactureList">#manufacturer_name#</cfoutput>

我知道这是引用名为manfatureList的查询,但是#manufacturer_name#是一个变量吗?

4 个答案:

答案 0 :(得分:7)

你所拥有的是一个写得不好的代码块。

要回答您的问题,哈希内部的任何内容都是ColdFusion变量。当您打算输出值时,需要使用哈希值。

您发布的此语句的问题在于开发人员让您假设manufacturer_name是manufacturerList查询的一部分,这可能是安全的假设,但是编码实践可怕。您应始终将所有变量作为范围,原因有两个:

  1. 可读性和可维护性。如果他们这样做了你可能不必在这里发一个问题。
  2. 范围变量意味着ColdFusion不必遍历各种范围以确定此变量所处的范围。这可以提高应用程序的性能。对于某些范围,没有确定对变量的调用将意味着您的代码将无法找到它。这里的查询变量不是这样,但是对于其他结构中的变量会发生。

答案 1 :(得分:3)

#manufacturer_name#表示在运行查询时将生成该值。在您的查询中,您可能有一个名为manufacturer_name的字段。

通过将manufacturer_name放在#符号中,意味着该字段将填充查询中的值。

以下是一个例子:

<cfquery name="qEmployee" datasource="cfdocexamples">  
 SELECT Emp_ID, FirstName, LastName, Salary FROM EMPLOYEE  
</cfquery>  
      <table bgcolor="CadetBlue" cellpadding="0" cellspacing="0">  
     <tr bgcolor="DarkCyan">  
         <td><b>Emp ID</b></td>  
         <td><b>First Name</b></td>  
         <td><b>Last Name</b></td>  
         <td><b>Salary</b></td>  
        </tr>  
     <cfoutput query="qEmployee">  
            <tr>  
                <td>#Emp_ID#</td>  
                <td>#FirstName#</td>  
                <td>#LastName#</td>  
                <td>#Salary#</td>  
            </tr>  
        </cfoutput>  
    </table>  

答案 2 :(得分:1)

包含在#符号中的

字符串表示变量,在这种情况下,这是指查询“manufacurelist”中的列名

答案 3 :(得分:1)

此外,最佳做法是将查询名称添加到该查询的任何列中(事实上,对所有变量执行此操作,将它们放在适当的范围内)。

除了使您的代码更高效之外,从长远来看,当您尝试找出特定变量的来源时,它还可以让开发人员的生活更轻松。

e.g。这样做:

<cfoutput query="manufactureList">#manufactureList.manufacturer_name#</cfoutput>