Обратная совместимость между ColdFusion 9 и ColdFusion 7 по отношению к CFScript? - PullRequest
4 голосов
/ 20 июля 2011

Я - новичок в ColdFusion, поэтому заранее прошу прощения за мое предстоящее невежество.

У нас возникла проблема с существующим CFScript.Проблемный скрипт содержит следующую строку:

...
if (fields.length() != 0) {
    // do something
}
...

Сценарий успешно выполняется в ColdFusion 9, но при попытке запустить сценарий в ColdFusion 7 мы видим следующее сообщение:

...
Invalid token '!' found on line...
...

Я предполагаю, что ColdFusion 7 не нравится оператор '! =', Я прав?

Если это так, есть ли какие-либо другие проблемы с обратной совместимостью с CFScript, которые могут привести к отключению?Я искал ресурсы, но, похоже, ничего определенного нет.

Спасибо.

Ответы [ 2 ]

8 голосов
/ 20 июля 2011

Да, в CF7 вам нужно использовать собственные операторы сравнения ColdFusion, в вашем случае neq.

Заменить

  • == на eq
  • != с neq
  • > с gt
  • < с lt
  • >= с gte
  • <= с lte
  • % с mod

и все готово.Эти операторы совместимы вверх, CF9 их поймет.

Кроме этого,

  • вам нужно сгруппировать все ваши локальные переменные (объявленные с var) вверху функции в ColdFusion 7Это ограничение исчезло в более поздних выпусках ColdFusion, но сценарии, написанные таким образом, будут, конечно, продолжать работать.
  • есть автоматическая область действия local с CF9.Эта область была недоступна в CF7 и CF8, но по соглашению люди добавили var local = StructNew(); в верхней части своих функций CF7, что также будет работать в CF> 7.
1 голос
/ 20 июля 2011

Вы правы - Javascript-подобные операторы (! =, ==, || и т. Д.) Были введены только в ColdFusion 9 вместе с гораздо большей поддержкой сценариев.

Это в основном относится к полной поддержке сценариев для CFC, но, вероятно, существует множество других проблем ...

...