ColdFusionMarkup言語

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
Cold Fusion Markup Language(CFML)
パラダイム命令型オブジェクト指向
によって設計されたジェレミー・アレール
デベロッパーAdobe SystemsColdFusion)、 Lucee Association( Lucee ) 、New Atlantaおよびaw2.0(openBD)、The Railo Company(Railo
初登場1995 ; 27年前 (1995
実装言語Java
OSクロスプラットフォーム
ライセンス実装によって異なります。プロプライエタリLGPL、およびGPLライセンスのエンジンはすべて利用可能です。
ファイル名拡張子.cfm、.cfc
Webサイトwww .adobe .com / products / coldfusion
主な実装
Adobe ColdFusionLuceeRailoBlueDragonOpen BlueDragon
影響を受けて
ルーシー

一般にCFMLとして知られるColdFusionMarkupLanguageは、 JVM.NET Framework、およびGoogleAppEngineで実行されるWeb開発用スクリプト言語です。Adobe ColdFusionLuceeNew Atlanta BlueDragon(Javaベースと.NETベースの両方のバージョンを提供)、RailoOpen BlueDragon、およびその他のCFMLサーバーエンジンを含む、CFMLエンジンの複数の商用およびオープンソース実装が利用可能です。

あらすじ

CFMLは、他の多くのWebスクリプト言語と同様に、最も単純な形式で、データベースコマンド、条件演算子、高レベルの書式設定関数、およびその他の要素を使用して標準のHTMLファイルを拡張し、 Webアプリケーションを生成します。[1] [2] CFMLには、CFMLのバージョンのオブジェクトであるColdFusionコンポーネント(CFC)を含む他の多くの構成要素も含まれており、ビジネスロジックをプレゼンテーションから分離できます。

CFMLは、 JavaScriptECMAスクリプト)に似たタグまたはCFScriptのいずれかを使用して記述できます。

CFMLアプリケーションのページには、 HTMLタグに加えてサーバー側のCFMLタグと関数が含まれています。最近のCFMLアプリケーションには、ビジネスロジックを実行するためにCFMLページからアクセスされるCFCも含まれる傾向があります。WebブラウザがColdFusionアプリケーションのページを要求すると、ColdFusionアプリケーションサーバーによって自動的に前処理されます。[3]

CFMLを使用して、HTML以外の、 XMLJavaScriptCSSなどの他の言語を生成することもできます

名前にもかかわらず、CFMLはマークアップ言語ではありません。また、特定のコアCFML機能が準拠を妨げているため、 SGMLではありません。

CFMLエンジンは、サーバー上の特定のファイル拡張子(.cfm、.cfc)が処理のためにCFMLエンジンに渡されるように構成されています。Javaベースのエンジンの場合、これはJavaサーブレットを介して実行されます。CFMLエンジンは、CFMLタグと関数のみを処理します。CFMLタグと関数の外部のテキストを変更せずにWebサーバーに返します。[4]

歴史

当初は常温核融合と名付けられたこのソフトウェアは、1995年ミネソタ州にあるAllaireCorporationによって作成された。その後、マサチューセッツ州ケンブリッジに移り、最終的にマサチューセッツ州ニュートンに移り、2001年にマクロメディアに買収された。こうして常温核融合はマクロメディア常温核融合になった。バージョン4のリリースでは、名前のスペースが削除されてColdFusionになりました。アドビは2005年にMacromediaを買収し、現在も積極的にColdFusionを開発しています。

1998年、Alan Williamsonと彼のスコットランドの会社「n-ary」は、一般的なプログラミングタスクを簡素化するためにJava用のテンプレートエンジンの作成を開始しました。[5] Williamsonはタグの代わりに中括弧表記を使用していましたが、CFMLの例と、タグ構文を使用して同様の問題をどのように解決しているか(Javaではない)を見て、最終的にBlueDragonになるものの開発を開始しました。 CFML言語の最初のJava実装でした。(ColdFusionは、バージョン6.0(ColdFusionの最初のJavaベースバージョン)が2002年にリリースされるまでCおよびC ++で記述されていました。)新しいアトランタは2001年頃にBlueDragonのライセンスを取得し、商用製品として利用できるようにし、最終的にCFMLの.NET実装を作成しました。 。Open BlueDragonは、商用BlueDragon製品のフォークであり、2008年に最初にリリースされました。

Railo CFMLエンジンは、2002年に学生プロジェクトとして開始され、2005年に商用プロジェクトとして最初に開始されました。[6] Railoは、エンジンを2008年にオープンソースにすることを発表し、最初のオープンソースバージョンが2009年にリリースされました。

2009年6月18日、アドビはCFUnited会議で、CFML言語への変更のガイドとレビューを担当するCFML諮問委員会[7]を設立したと発表しました。この取り組みは2010年に解散しました。GoogleグループのCFMLの従来型の知識は、言語とエンジンの機能に関するオープンで公開されたディスカッションのフォーラムとして作成されました。その使用は2011年以降減少しています。[要出典]

2012年に、OpenCFMLFoundationが発足しました。その機能は、オープンソースのCFMLアプリケーションとプラットフォーム をプッシュすることです。

元Railoのリード開発者であるMichaelOffnerは、2015年1月29日にロンドンでRailoのフォークであるLuceeを立ち上げました。コミュニティのサポーターとLucee Associationのメンバーの支援を受けて、プロジェクトの目標は、より少ないリソースを使用してCFMLの機能を提供することです。パフォーマンスが向上し、CFMLをそのルーツを超えて最新の動的Webプログラミングプラットフォームに移行します。

構文

CFMLタグの形式はHTMLタグと似ています。これらは山括弧(<および>)で囲まれ、通常は0個以上の名前付き属性がありますが、一部のタグ(cfset、cfifなど)には属性ではなく式が含まれています。多くのCFMLタグには本文があります。つまり、それらの間で処理されるテキストを含む開始タグと終了タグがあります。例えば:

<cfoutput> 
   ボブ!
</ cfoutput>

cfsetやcfftpなどの他のタグには、本文がありません。必要なすべての情報は、次の例のように、タグ属性(名前/値ペア)の形式で開始(<)文字と終了(>)文字の間にあります。タグに本文がないことが合法である場合、最初の例のようにタグを閉じないままにしておくことは構文的に許容されますが、多くのCFML開発者は、コードを(おそらく)読みやすくするために2番目の例のようにタグを自己閉じることを選択します。

<cfset  value  =  "Hello" > 
<cfset  value  =  "Hello"  / >

タグに本文を含めることができる場合でも、属性で必要なすべての情報が指定されているため、本文を含める必要がない場合があります。これらの場合、上記の2番目の例と同様に、次の例のように、終了タグ(したがってタグ本体)を省略して、タグを自動で閉じることができます。[8]

< cfexecute  name = "C:\\ winNT \\ System32 \\ netstat.exe"  arguments = "-e"  outputfile = "C:\\ Temp \\ out.txt"  timeout = "1"  />

さまざまなタグは、プログラマーがタイプを具体的に宣言した場合に、入力パラメーター(cffunction、cfparam、cfqueryparamなど)をタイプチェックする機能を提供しますこの機能はcfqueryparamとともに使用され、ハッカーやSQLインジェクションなどの悪意のあるWebリクエストからWebアプリケーションとデータベースを保護します。

内蔵タグ

100近くのタグとさらに多くの関数がCFML言語の中心を構成しています。以下に、CFMLタグを機能または目的別に示します。[9]

カスタムタグ

CFMLでは、カスタムタグの形式で言語を拡張できます。カスタムタグは、CFML言語自体の一部ではない開発者によって作成されたタグです。カスタムタグは、タグとして呼び出すことを目的とした通常のCFMLファイルですが、テンプレートをカスタムタグと通常のテンプレートの両方として扱うこともできますカスタムタグはCFMLで記述され、通常、カスタムタグのファイル名の前にcf_を付けることで呼び出されますが、カスタムタグを呼び出す方法は他にもあります。

テンプレートがカスタムタグとして呼び出される場合、そのタグを呼び出すために使用される属性は、属性スコープのタグ内で使用可能であり、呼び出し元ページの変数には、呼び出し元スコープを介してアクセスできます。

たとえば、追加を実行するカスタムタグを記述し、2つの属性を取得してそれらを一緒に追加する場合、タグは次のようなaddition.cfmファイルになります。

<cfset  caller.addition  =  attributes.first  +  attributes.second  / > 
< cfexit  method = "exitTag"  />

タグがファイルと同じディレクトリ(または事前定義されたcustomtagsディレクトリ)にあると仮定すると、次のように呼び出すことができます。

< cf_addition  first = "1"  second = "2" >

CFXタグは、 JavaまたはC ++を使用して開発されたカスタムタグであり、cf_と同じようにcfx_がプレフィックスとして付けられます。JavaおよびC++タグは、CFMLエンジンの管理者を使用するか、構成ファイルを編集することにより、CFMLランタイム環境に追加されます。

一部のCFMLエンジンでは、<cfimport>タグを使用してJSPタグをCFMLページに含めることもできます。[要出典]

機能

ColdFusion Markup Languageには、論理演算と算術演算を実行し、データを操作するために使用する一連の関数が含まれています。

働き 参照 コード
配列 [10] (ArraySort、ArrayAppend、ArrayDeleteAt ...)
変換 [11] (URLEncodedFormat、ToString ...)
日時 [12] (LsTimeFormat、DateAdd、DateDiff ...)
決断 [13] (IsDefined、IIF ...)
表示とフォーマット [14] (CJustify、NumberFormat ...)
動的評価 [15] (DE、評価...)
拡張性 [16] (CreateObject、ToScript ...)
画像 [17] (ImageRotate、ImageAddBorder ...)
国際的な機能 [18] (SetLocale、GetTimeZoneInfo ...)
リスト [19] (FindOneOf、ListSetAt ...)
数学 [20] (ランダム化、Sqr ...)
その他の機能 [21] (WriteOutput、GetBaseTemplatePath ...)
クエリ [22] (QueryAddColumn、QuerySetCell ...)
安全 [23] (暗号化、復号化...)
[24] (逆、HTMLCodeFormat ...)
構造 [25] (StructKeyExists、StructDelete ...)
システム [26] (GetTickCount、GetTempFile ...)
XML [27] (XMLParse、GetSOAPResponse ...)

ColdFusionコンポーネント(CFC)

CFCは、オブジェクト指向(OOP)言語によって提供される典型的な機能の一部(すべてではない)を提供します。CFCを作成するには:

拡張子が.CFCのファイルを作成します(これにより、CFCと.CFM拡張子のあるColdFusionテンプレートが区別されます)。
4つのタグを使用してコンポーネントを作成し、それらの関数と引数を定義して、値を返します。
<cfcomponent>:CFCを定義します
<cffunction>:CFC内の関数(メソッド)を定義します
<cfargument>:関数が受け入れる引数(パラメーター)を定義します
<cfreturn>:関数から値または結果を返します

CFCはプレーンCFMLです。CFC内では、CFMLタグ、関数、カスタムタグ、その他のコンポーネントなどを使用できます。

CFCはさまざまな方法で使用できます。CFCに含まれるメソッドを単に呼び出す必要がある場合、<cfinvoke>タグはCFCのインスタンスを作成し、目的のメソッドを呼び出してから、CFCのインスタンスを破棄します。<cfinvoke>は、コンポーネントの名前(.cfc拡張子を除く)と実行するメソッドを取ります。返されたデータにアクセスするために、RETURNVARIABLE属性は、関数が返すものをすべて含む変数の名前を提供します。CFCは、4つのタグを使用して作成され、.CFCファイルとして保存され、<cfinvoke>タグを使用して呼び出されます。[28]

以下の例では、コンポーネントのtemperature.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 &deg; F = 結果&deg; C < / cfoutput> <br />  

CFCはオブジェクトとしてインスタンス化することもできます。Person.cfcというCFCファイルを想定すると、このCFCのインスタンスは次のようにインスタンス化されます。

<cfset  person  =  CreateObject "component"  "Person"  / >

CFCは、CFMLでWebサービスを作成する機能の基礎にもなります。CFCは通常の方法で作成され、CFC内の関数に属性access = "remote"を追加すると、その関数をSOAPベースのWebサービスとして呼び出すことができるようになります。CFMLエンジンはWSDLを自動生成し、Webサービスが機能するために必要なすべてのスタブを作成します。

参照

  1. ^ Adob​​e ColdFusion 8 –インターネットアプリケーションとWebアプリケーションサーバーについて WaybackMachineで2012年5月13日にアーカイブされましたLivedocs.adobe.com。2013年9月17日に取得。
  2. ^ BlueDragonマニュアルを開きます。Openbd.org。2013年9月17日に取得。
  3. ^ Smith、MichaelColdFusionとは何ですか?Fusionauthority.com
  4. ^ 2008年3月24日、 WaybackMachineでアーカイブされたタグ
  5. ^ オープンBlueDragon運営委員会インタビューシリーズ–AlanWilliamsonalan.blog-city.com
  6. ^ WaybackMachineで2011年6月30日にアーカイブされたRailoについて Getrailo.org。2013年9月17日に取得。
  7. ^ http://corfield.org/entry/CFML_Advisory_Committee2009年 1月7日にWaybackMachineCFML諮問委員会でアーカイブ—アーキテクトの見解Corfield.org。2013年7月21日に取得。
  8. ^ タグ構文 2008年5月27日、 WaybackMachineでアーカイブ
  9. ^ 関数別のタグ WaybackMachineで2008-05-09にアーカイブされました。(PDF)。2013年9月17日に取得。
  10. ^ WaybackMachineでアーカイブされた2008-12-10の配列関数 Livedocs.adobe.com。2013年9月17日に取得。
  11. ^ ウェイバックマシン2008年12月8日にアーカイブされた変換関数 Livedocs.adobe.com。2013年9月17日に取得。
  12. ^ ウェイバックマシン2008年12月2日にアーカイブされた日付と時刻の関数 Livedocs.adobe.com。2013年9月17日に取得。
  13. ^ ウェイバックマシンで2009年2月1日にアーカイブされた決定機能 Livedocs.adobe.com。2013年9月17日に取得。
  14. ^ ウェイバックマシン2008年12月20日にアーカイブされた表示およびフォーマット機能 Livedocs.adobe.com。2013年9月17日に取得。
  15. ^ WaybackMachineで2008年12月7日にアーカイブされ動的評価関数 Livedocs.adobe.com。2013年9月17日に取得。
  16. ^ WaybackMachine で2009-02-14にアーカイブさた拡張性。Livedocs.adobe.com。2013年9月17日に取得。
  17. ^ ウェイバックマシン2009年1月31日にアーカイブされた画像関数 Livedocs.adobe.com。2013年9月17日に取得。
  18. ^ ウェイバックマシンで2009年2月8日にアーカイブされた国際機能 Livedocs.adobe.com。2013年9月17日に取得。
  19. ^ ウェイバックマシン2008年12月10日にアーカイブされた機能のリスト Livedocs.adobe.com。2013年9月17日に取得。
  20. ^ WaybackMachineで2008年12月7日にアーカイブされ数学関数 Livedocs.adobe.com。2013年9月17日に取得。
  21. ^ ウェイバックマシン2009年1月30日にアーカイブされたその他の機能 Livedocs.adobe.com。2013年9月17日に取得。
  22. ^ ウェイバックマシンで2009年2月21日にアーカイブされたクエリ関数 Livedocs.adobe.com。2013年9月17日に取得。
  23. ^ WaybackMachineで2008年12月5日にアーカイブされセキュリティ機能 Livedocs.adobe.com。2013年9月17日に取得。
  24. ^ ウェイバックマシンで2009年1月29日にアーカイブされた文字列関数 Livedocs.adobe.com。2013年9月17日に取得。
  25. ^ 構造関数は WaybackMachineで2009-02-14にアーカイブされました。Livedocs.adobe.com。2013年9月17日に取得。
  26. ^ システム機能は WaybackMachineで2009-02-01にアーカイブされました。Livedocs.adobe.com。2013年9月17日に取得。
  27. ^ ウェイバックマシンで2009年2月20日にアーカイブされたXML関数 Livedocs.adobe.com。2013年9月17日に取得。
  28. ^ Forta、BenColdFusionコンポーネントの使用adobe.com

外部リンク