Язык разметки ColdFusion
Парадигма | императивный , объектно-ориентированный |
---|---|
Разработано | Джереми Аллер , Джозеф Дж. Аллер |
Разработчик | Adobe Systems ( ColdFusion ), Lucee Association ( Lucee ), New Atlanta и aw2.0 ( openBD ), The Railo Company ( Railo ) |
Впервые появился | 1995 год |
Стабильная версия | Выпуск 2023 г.
/ 2023 |
Язык реализации | Ява |
ТЫ | Кросс-платформенный |
Лицензия | Зависит от реализации. проприетарные движки , движки под лицензией LGPL и GPL . Доступны |
Расширения имен файлов | .cfm, .cfc |
Веб-сайт | www |
Основные реализации | |
Adobe ColdFusion , Lucee , Railo , BlueDragon , Open BlueDragon | |
Под влиянием | |
Люси |
Язык разметки ColdFusion , более известный как CFML , — это язык сценариев для веб-разработки, который работает на виртуальной машине Java (JVM), платформе .NET и Google App Engine . несколько коммерческих и бесплатных программных реализаций механизмов CFML с открытым исходным кодом Доступно , включая Adobe ColdFusion , Lucee , New Atlanta BlueDragon ( версии для Java и .NET), Railo , Open BlueDragon и другие серверные механизмы CFML .
Synopsis[editКраткое содержание
В своей простейшей форме, как и многие другие языки веб-скриптов, CFML дополняет стандартные HTML- файлы командами базы данных , условными операторами форматирования высокого уровня , функциями и другими элементами для создания веб-приложений . [1] [2] CFML также включает множество других конструкций, включая компоненты ColdFusion (CFC), версию объектов CFML , которые позволяют отделять бизнес-логику от представления.
CFML можно написать с использованием тегов или CFScript , который напоминает JavaScript ( ECMAScript ).
Страницы в приложении CFML включают в себя теги и функции CFML на стороне сервера в дополнение к тегам HTML. Современные приложения CFML также имеют тенденцию иметь CFC, к которым обращаются страницы CFML для выполнения бизнес-логики. Когда веб-браузер запрашивает страницу в приложении ColdFusion, она автоматически предварительно обрабатывается сервером приложений ColdFusion . [3]
CFML также можно использовать для создания других языков, помимо HTML, таких как XML , JavaScript , CSS и т. д.
Несмотря на название, CFML не является языком разметки. Это также не SGML , поскольку некоторые основные функции CFML не позволяют ему соответствовать.
Механизм CFML настроен таким образом, что определенные расширения файлов на сервере (.cfm, .cfc) передаются механизму CFML для обработки. В случае механизмов на основе Java это достигается с помощью сервлетов Java . Механизм CFML обрабатывает только теги и функции CFML; он возвращает текст вне тегов и функций CFML на веб-сервер без изменений. [4]
История [ править ]
Программное обеспечение, первоначально названное Cold Fusion, было создано в 1995 году корпорацией Allaire , первоначально расположенной в Миннесоте . Позже она переехала в Кембридж, штат Массачусетс, а затем, наконец, в Ньютон, штат Массачусетс, прежде чем была приобретена Macromedia в 2001 году. Таким образом, Allaire Cold Fusion стала Macromedia Cold Fusion. При выпуске версии 4 пробел в названии был удален и стал ColdFusion. Adobe приобрела Macromedia в 2005 году. По состоянию на 2023 год. [update], она все еще активно разрабатывает ColdFusion.
В 1998 году Алан Уильямсон и его шотландская компания «n-ary» начали создавать шаблонизатор для Java, упрощающий общие задачи программирования. [5] Уильямсон использовал фигурные скобки вместо тегов, но когда он увидел пример CFML и то, как он решает подобные проблемы (хотя и не на Java) с использованием синтаксиса тегов, он начал разработку того, что в конечном итоге стало BlueDragon, который был первым Java-реализация языка CFML. (ColdFusion был написан на C и C++ до тех пор, пока в 2002 году не была выпущена версия 6.0, первая версия на основе Java.) Примерно в 2001 году New Atlanta лицензировала BlueDragon и сделала его доступным в качестве коммерческого продукта, в конечном итоге создав .NET- реализацию CFML. Open BlueDragon — это ответвление коммерческого продукта BlueDragon, впервые выпущенное в 2008 году.
Двигатель Railo CFML зародился как студенческий проект в 2002 году и впервые был запущен как коммерческий проект в 2005 году. [6] Railo объявила, что делает движок открытым исходным кодом в 2008 году, а первая версия с открытым исходным кодом была выпущена в 2009 году.
18 июня 2009 г. Adobe объявила на конференции CFUnited, что сформировала Консультативный комитет CFML. [7] он будет отвечать за руководство и анализ изменений в языке CFML. Эта инициатива была расформирована в 2010 году. Группа Google CFML Conventional Wisdom была создана как форум для открытых, публичных дискуссий о функциях языка и движка; его использование сократилось с 2011 года. [ нужна ссылка ]
В 2012 году был запущен Фонд OpenCFML. Его функция заключается в продвижении с открытым исходным кодом приложений и платформ CFML .
Бывший ведущий разработчик Railo Майкл Оффнер запустил Lucee , ответвление Railo , в Лондоне 29 января 2015 года. При поддержке сторонников сообщества и членов Lucee Association цель проекта — обеспечить функциональность CFML с использованием меньшего количества ресурсов, предоставляя повысить производительность и превратить CFML в современную и динамичную платформу веб-программирования.
Синтаксис [ править ]
Теги CFML имеют формат, аналогичный тегам HTML. Они заключаются в угловые скобки ноль или более) (< и >) и обычно не имеют именованных атрибутов ( , хотя некоторые теги (например, cfset, cfif) содержат выражения, а не атрибуты. Многие теги CFML имеют тело; то есть у них есть начальный и конечный теги, между которыми находится текст, подлежащий обработке. Например:
<cfoutput>
#value# Bob!
</cfoutput>
Другие теги, такие как cfset и cfftp, никогда не имеют тела; вся необходимая информация размещается между начальным (<) символом и конечным (>) символом в виде атрибутов тега (пар имя/значение), как в примере ниже. Если теги не имеют тела, синтаксически приемлемо оставлять их незакрытыми, как в первом примере, хотя многие разработчики CFML предпочитают самозакрывать теги, как во втором примере, чтобы (возможно) сделать код более разборчивым. .
<cfset value = "Hello">
<cfset value = "Hello" />
Даже если тег может иметь тело, в некоторых случаях его наличие может не потребоваться, поскольку атрибуты определяют всю необходимую информацию. В этих случаях, как и во втором примере выше, конечный тег (и, следовательно, тело тега) может быть опущен, а тег может быть самозакрывающимся, как в следующем примере: [8]
<cfexecute name="C:\\winNT\\System32\\netstat.exe" arguments="-e" outputfile="C:\\Temp\\out.txt" timeout="1" />
Различные теги предоставляют возможность проверки типов входных параметров (например, cffunction, cfparam, cfqueryparam), если программист специально объявляет их тип. Эта функциональность используется с cfqueryparam для защиты веб-приложений и баз данных от хакеров и вредоносных веб-запросов, таких как SQL-инъекция .
Встроенные теги [ править ]
Около 100 тегов и множество других функций составляют основу языка CFML. Ниже перечислены теги CFML по их функциям и назначению. [9]
- Платформа приложения
- Коммуникации
- Контроль
- Управление потоком
- Манипулирование базой данных
- Обработка исключений
- Вывод данных
- Отладка
- Управление отображением
- Расширяемость
- Управление файлами
- форма
- Интернет-протокол
- Обработка страниц
- Безопасность
- переменными Манипулирование
- Другие теги (cfimage, cfregistry и т. д.)
Пользовательские теги [ изменить ]
CFML допускает расширения языка в виде пользовательских тегов, которые представляют собой теги, созданные разработчиком и не являющиеся частью самого языка CFML. можно рассматривать Пользовательские теги — это обычные файлы CFML, которые предназначены для вызова в качестве тегов, хотя шаблон как как пользовательский тег, так и как обычный шаблон. Пользовательские теги пишутся на языке CFML и обычно вызываются путем добавления к имени файла пользовательского тега префикса cf_ , хотя существуют и другие способы вызова пользовательских тегов.
Если шаблон вызывается как настраиваемый тег, атрибуты, используемые для вызова этого тега, доступны внутри тега в области атрибутов , а переменные вызывающей страницы доступны через область вызывающего объекта .
Например, если написать собственный тег для выполнения сложения , взять два атрибута и сложить их вместе, тег будет представлять собой файл add.cfm, который может выглядеть следующим образом:
<cfset caller.addition = attributes.first + attributes.second />
<cfexit method="exitTag" />
Предполагая, что тег находится в том же каталоге, что и файл (или в заранее определенном каталоге customtags), его можно вызвать следующим образом:
<cf_addition first="1" second="2">
Теги CFX — это специальные теги, разработанные с использованием Java или C++ и имеющие префикс cfx_, как и cf_. Теги Java и C++ добавляются в среду выполнения CFML с помощью администратора механизма CFML или путем редактирования файлов конфигурации.
В некоторых механизмах CFML теги JSP также можно включать в страницы CFML с помощью тега <cfimport>. [ нужна ссылка ]
Функции [ править ]
Язык разметки ColdFusion включает набор функций, которые вы используете для выполнения логических и арифметических операций и манипулирования данными.
функция | ссылка | код |
---|---|---|
Множество | [10] | (ArraySort, ArrayAppend, ArrayDeleteAt...) |
Конверсия | [11] | (URLEncodedFormat, ToString...) |
Дата и время | [12] | (LsTimeFormat, DateAdd, DateDiff...) |
Решение | [13] | (Определено, IIF...) |
Отображение и форматирование | [14] | (CJustify, NumberFormat...) |
Динамическая оценка | [15] | (DE, Оценить...) |
Расширяемость | [16] | (CreateObject, ToScript...) |
Изображение | [17] | (ImageRotate, ImageAddBorder...) |
Международные функции | [18] | (SetLocale, GetTimeZoneInfo...) |
Список | [19] | (FindOneOf, ListSetAt...) |
Математический | [20] | (Случайным образом, Квадрат...) |
Другие функции | [21] | (WriteOutput, GetBaseTemplatePath...) |
Запрос | [22] | (QueryAddColumn, QuerySetCell...) |
Безопасность | [23] | (Зашифровать, Расшифровать...) |
Нить | [24] | (Обратный, HTMLCodeFormat...) |
Структура | [25] | (StructKeyExists, StructDelete...) |
Система | [26] | (GetTickCount, GetTempFile...) |
XML | [27] | (XMLParse, GetSOAPResponse...) |
Компоненты ColdFusion (CFC) [ править ]
CFC предоставляют некоторые (не все) типичные функции и возможности объектно-ориентированных (ООП) языков. Чтобы создать CFC:
- Создайте файл с расширением .CFC (это отличает CFC от шаблонов ColdFusion, имеющих расширение .CFM).
- Используйте четыре тега для создания компонентов, определения их функций и аргументов и возврата значения.
- <cfcomComponent>: определяет CFC.
- <cffunction>: определяет функции (методы) в CFC.
- <cfargument>: определяет аргументы (параметры), которые принимает функция.
- <cfreturn>: возвращает значение или результат функции.
ХФУ – это обычные CFML. В CFC можно использовать любой тег CFML, функцию, специальный тег, другие компоненты и т. д.
ХФУ можно использовать по-разному. Если просто необходимо вызвать метод, содержащийся в CFC, тег <cfinvoke> создаст экземпляр CFC, вызовет нужный метод, а затем уничтожит экземпляр CFC. <cfinvoke> принимает имя компонента (без расширения .cfc) и метод для выполнения. Для доступа к любым возвращаемым данным атрибут RETURNVARIABLE предоставляет имя переменной, содержащей все, что возвращает функция. CFC создаются с использованием четырех тегов, сохраняются как файлы .CFC и вызываются с помощью тега <cfinvoke>. [28]
В приведенном ниже примере компонент temp.cfc имеет метод FtoC, который преобразует температуру из градусов Фаренгейта в градусы Цельсия. Шаблон test.cfm вызывает метод, преобразует значение 212 градусов по Фаренгейту и выводит результат.
<!--- temperature.cfc --->
<cfcomponent>
<cffunction name="FtoC" access="public" returntype="numeric">
<cfargument name="fahrenheit" required="yes" type="numeric" />
<cfset answer= (fahrenheit - 32)*100/180 />
<cfreturn answer />
</cffunction>
</cfcomponent>
<!--- test.cfm --->
<cfset fDegrees = 212 />
<cfinvoke component="temperature" method="FtoC" returnvariable="result">
<cfinvokeargument name="fahrenheit" value="#fDegrees#" />
</cfinvoke>
<cfoutput>#fDegrees#°F = #result#°C</cfoutput> <br />
CFC также могут быть созданы как объекты. Если предположить, что файл CFC называется Person.cfc, экземпляр этого CFC будет создан следующим образом:
<cfset person = CreateObject("component", "Person") />
CFC также составляют основу возможности создания веб-сервисов в CFML. CFC создается обычным способом, и атрибут access="remote", добавленный к любой функции в CFC, делает эту функцию доступной для вызова в качестве веб-службы на основе SOAP . Механизм CFML автоматически генерирует WSDL и создает все необходимые заглушки для работы веб-службы.
Ссылки [ править ]
- ^ Adobe ColdFusion 8 — Об интернет-приложениях и серверах веб-приложений. Архивировано 13 мая 2012 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Откройте руководство BlueDragon . Openbd.org. Проверено 17 сентября 2013 г.
- ^ Смит, Майкл Что такое ColdFusion? fusionauthority.com
- ^ Теги, заархивированные 24 марта 2008 г., в Wayback Machine.
- ^ Серия интервью открытого руководящего комитета BlueDragon - Алан Уильямсон . alan.blog-city.com
- ^ О Railo. Архивировано 30 июня 2011 г. в Wayback Machine . Getrailo.org. Проверено 17 сентября 2013 г.
- ^ http://corfield.org/entry/CFML_Advisory_Committee. Архивировано 7 января 2009 г. в Консультативном комитете CFML Wayback Machine - Взгляд архитектора. Корфилд.орг. Проверено 21 июля 2013 г.
- ^ Синтаксис тегов. Архивировано 27 мая 2008 г. на Wayback Machine.
- ^ Теги по функциям. Архивировано 9 мая 2008 г. на Wayback Machine . (PDF) Проверено 17 сентября 2013 г.
- ^ Функции массива . Архивировано 10 декабря 2008 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Функции преобразования . Архивировано 8 декабря 2008 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Функции даты и времени. Архивировано 2 декабря 2008 г. в Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Функции принятия решений . Архивировано 1 февраля 2009 г. в Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Функции отображения и форматирования. Архивировано 20 декабря 2008 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Функции динамической оценки. Архивировано 7 декабря 2008 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Расширяемость . Архивировано 14 февраля 2009 г. в Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Функции изображения . Архивировано 31 января 2009 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Международные функции. Архивировано 8 февраля 2009 г. в Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Функции списка . Архивировано 10 декабря 2008 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Математические функции. Архивировано 7 декабря 2008 г. в Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Другие функции. Архивировано 30 января 2009 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Функции запроса . Архивировано 21 февраля 2009 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Функции безопасности . Архивировано 5 декабря 2008 г. в Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Строковые функции. Архивировано 29 января 2009 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Структурные функции. Архивировано 14 февраля 2009 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Системные функции . Архивировано 1 февраля 2009 г. в Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Функции XML . Архивировано 20 февраля 2009 г. на Wayback Machine . Livedocs.adobe.com. Проверено 17 сентября 2013 г.
- ^ Форта, Бен Использование компонентов ColdFusion . Adobe.com
Внешние ссылки [ править ]
- Документация CFML поддерживается сообществом.
- CFML за 100 минут — введение в основы языка CFML.
- Программа обучения, проводимая сообществом и обучающая основам CFML.
- Команда CFML в Slack
- CFQuickDocs — справочник по тегам и функциям ColdFusion.
- Люси
- Открыть BlueDragon
- Синий Дракон
- Трескаться
- CFML Традиционная мудрость Google Group
- Консультативный комитет CFML (сейчас этот комитет прекратил свое существование)