Что означает # в этом заявлении ColdFusion? - PullRequest
1 голос
/ 05 июля 2011

Я пытаюсь лучше понять простуду, чтобы решить небольшую проблему.Но для жизни я не могу найти, что это значит

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

Я знаю, что это ссылка на запрос с именем manfatureList, но было ли # factory_name #, это переменная?

Ответы [ 4 ]

7 голосов
/ 05 июля 2011

То, что у вас есть, это плохо написанный блок кода.

Чтобы ответить на ваш вопрос, все, что находится внутри хэшей, является переменной ColdFusion.Вам нужно использовать хэши, когда вы намереваетесь вывести значение.

Проблема с этим утверждением, которое вы опубликовали, заключается в том, что разработчик оставил вас, чтобы предположить, что имя_производителя является частью запроса изготовления списка, что может быть безопасно предположить, но является ужасной практикой кодирования.Вы всегда должны охватывать все переменные по двум причинам:

  1. Удобочитаемость и ремонтопригодность.Если бы они сделали это, вам, вероятно, не пришлось бы публиковать здесь вопрос.
  2. Переменные областей действия означают, что ColdFusion не нужно проходить через различные области действия, чтобы выяснить, в какой области эта переменная живет. Это приводит кповышение производительности в вашем приложении.В некоторых областях не ограничивать вызов переменной будет означать, что ваш код не сможет ее найти.Не так с переменными запроса здесь, но для переменных внутри других структур, которые произойдут.
3 голосов
/ 05 июля 2011

# имя_производителя # означает, что значение будет сгенерировано при выполнении запроса. В вашем запросе у вас, вероятно, есть поле с именем factory_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>  
1 голос
/ 05 июля 2011

Кроме того, рекомендуется добавлять имя запроса к любым столбцам из этого запроса (и фактически делать это со всеми переменными, помещать их в соответствующие области видимости).

А также сделать ваш код болееэффективный, он также облегчает жизнь разработчика в долгосрочной перспективе, когда вы пытаетесь выяснить, откуда взялась конкретная переменная.

например, сделайте это вместо этого:

<cfoutput query="manufactureList">#manufactureList.manufacturer_name#</cfoutput>
1 голос
/ 05 июля 2011

строка, заключенная в символы #, обозначает переменные, в данном случае это относится к имени столбца в запросе "manufacurelist"

...