ColdFusion İşaretleme Dili | Yapılar

ColdFusion İşaretleme Dili | Yapılar

CFM Syntax Yapısı

CFML etiketleri, HTML etiketlerine benzer bir biçime sahiptir. Köşeli ayraçlar (< ve >) içine alınırlar ve bazı etiketler (örneğin cfset, cfif) nitelikler yerine bir ifade içermesine rağmen, genellikle sıfır veya daha fazla adlandırılmış niteliğe sahiptirler. Birçok CFML etiketinin gövdesi vardır; yani aralarında işlenecek metin içeren başlangıç ​​ve bitiş etiketleri vardır. Örneğin:

				
					<cfoutput>
#value# BOB!
</cfoutput>
				
			

cfset ve cfftp gibi diğer etiketlerin hiçbir zaman gövdesi yoktur; gerekli tüm bilgiler, aşağıdaki örnekte olduğu gibi, etiket nitelikleri (ad/değer çiftleri) biçiminde başlangıç ​​(<) karakteri ile bitiş (>) karakteri arasında gider. Etiketlerin bir gövdeye sahip olmaması yasalsa, ilk örnekte olduğu gibi onları kapatmadan bırakmak sözdizimsel olarak kabul edilebilir, ancak birçok CFML geliştiricisi, ikinci örnekte olduğu gibi (tartışmalı) kodu daha okunaklı hale getirmek için etiketleri kendi kendine kapatmayı seçiyor.

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

Etiket bir gövdeye sahip olsa bile, öznitelikler gerekli tüm bilgileri belirttiği için bazı durumlarda gövde dahil gerekli olmayabilir. Bu durumlarda, yukarıdaki ikinci örnekte olduğu gibi, bitiş etiketi (ve dolayısıyla etiket gövdesi) atlanabilir ve aşağıdaki örnekte olduğu gibi etiket kendi kendine kapanabilir:

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

Çeşitli etiketler, programcı türlerini özel olarak bildirirse, giriş parametrelerini (örn. cffunction, cfparam, cfqueryparam) tip-kontrol etme yeteneği sunar . Bu işlevsellik, web uygulamalarını ve veritabanlarını bilgisayar korsanlarından ve SQL enjeksiyonu gibi kötü niyetli web isteklerinden korumak için cfqueryparam ile birlikte kullanılır.

Yerleşik Etiketler (Built-in tags)

Yaklaşık 100 etiket ve daha birçok işlev, CFML dilinin kalbini oluşturur. Aşağıda CFML etiketleri işlevlerine veya amaçlarına göre listelenmektedir.

  • uygulama çerçevesi
  • iletişim
  • Kontrol
    • Akış kontrolü
    • Veritabanı manipülasyonu
    • İstisna işleme
  • Veri çıkışı
  • hata ayıklama
  • Ekran yönetimi
  • genişletilebilirlik
  • Dosya yönetimi
  • form
  • İnternet protokolü
  • Sayfa işleme
  • Güvenlik
  • Değişken manipülasyon
  • Diğer etiketler (cfimage, cfregistry vb.)

Bu listeyi İngilizce olarak sıralarsam daha anlaşır olacağını düşünüyorum.

  • Application framework
  • Communications
  • Control
    • Flow-control
    • Database manipulation
    • Exception handling
  • Data output
  • Debugging
  • Display management
  • Extensibility
  • File management
  • form
  • Internet protocol
  • Page processing
  • Security
  • Variable manipulation
  • Other tags (cfimage, cfregistry etc.)

Özel etiketler (Custom tags)

CFML, geliştirici tarafından oluşturulan ve CFML dilinin kendisinin parçası olmayan etiketler olan özel etiketler biçimindeki dil uzantılarına izin verir. Özel etiketler, bir şablonu hem özel etiket hem de normal şablon olarak ele almak mümkün olsa da, etiketler olarak çağrılması amaçlanan normal CFML dosyalarıdır . Özel etiketler CFML’de yazılır ve genellikle özel etiketin dosya adının önüne cf_ eklenerek çağrılır , ancak özel etiketleri çağırmanın başka yolları da vardır.

Bir şablon özel bir etiket olarak çağrılırsa, bu etiketi çağırmak için kullanılan öznitelikler, bir öznitelik kapsamında etikette bulunur ve çağıran sayfanın değişkenlerine, arayan kapsamı aracılığıyla erişilebilir.

Örneğin, toplama işlemini gerçekleştirmek için özel bir etiket yazıyorsanız , iki özniteliği alıp bunları bir araya getiriyorsanız, etiket şöyle görünebilecek bir add.cfm dosyası olur:

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

Etiketin dosyayla aynı dizinde (veya önceden tanımlanmış bir özel etiketler dizininde) olduğunu varsayarsak, şu şekilde çağrılabilir:

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

CFX etiketleri, Java veya C++ kullanılarak geliştirilmiş özel etiketlerdir ve tıpkı cf_ gibi cfx_ ile ön eki vardır. Java ve C++ etiketleri, CFML motorunun yöneticisi kullanılarak veya yapılandırma dosyaları düzenlenerek CFML çalışma zamanı ortamına eklenir.

Bazı CFML motorlarında JSP etiketleri, <cfimport> etiketi kullanılarak CFML sayfalarına da dahil edilebilir.

ColdFusion Bileşenleri ( (Components) CFC'ler)

CFC’ler, nesne yönelimli (OOP) diller tarafından sağlanan tipik özelliklerin ve işlevlerin bazılarını (tümü değil) sağlar . Bir CFC oluşturmak için:

.CFC uzantılı bir dosya oluşturun (bu, CFC’leri .CFM uzantılı ColdFusion şablonlarından ayırır).

Bileşenleri oluşturmak, işlevlerini ve argümanlarını tanımlamak ve bir değer döndürmek için dört etiket kullanın.

<cfcomponent>: Bir CFC tanımlar

<cffunction>: Bir CFC içindeki işlevleri (yöntemleri) tanımlar

<cfargument>: Bir fonksiyonun kabul ettiği argümanları (parametreleri) tanımlar

<cfreturn>: Bir işlevden bir değer veya sonuç döndürür

CFC’ler düz CFML’dir. Bir CFC içinde herhangi bir CFML etiketi, işlevi, özel etiketi, diğer bileşenler vb. kullanılabilir.

CFC’ler çeşitli şekillerde kullanılabilir. Bir CFC’de bulunan bir yöntemin basitçe çağrılması gerekiyorsa, <cfinvoke> etiketi CFC’nin bir örneğini oluşturacak, istenen yöntemi çağıracak ve ardından CFC örneğini yok edecektir.

<cfinvoke>, bileşenin adını (eksi .cfc uzantısı) ve yürütülecek yöntemi alır. Döndürülen verilere erişmek için, RETURNVARIABLE özniteliği, işlevin döndürdüğü her şeyi içerecek bir değişkenin adını sağlar.

CFC’ler dört etiket kullanılarak oluşturulur, .CFC dosyaları olarak kaydedilir ve <cfinvoke> etiketi kullanılarak çağrılır.

Aşağıdaki örnekte, sıcaklık.cfc bileşeni, sıcaklığı Fahrenhayt’tan Santigrat’a çeviren bir FtoC yöntemine sahiptir. test.cfm şablonu yöntemi çağırır ve 212 derece Fahrenheit’e dönüştürür ve sonucu verir.

				
					
<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>

<cfset fDegrees = 212 />
<cfinvoke component="temperature" method="FtoC" returnvariable="result">
<cfinvokeargument name="fahrenheit" value="#fDegrees#" />
</cfinvoke>
<"cfoutput>#fDegrees#°F = #result#°C <"br />
				
			

CFC’ler ayrıca nesneler olarak somutlaştırılabilir. person.cfc adlı bir CFC dosyası olduğu varsayıldığında, bu CFC’nin bir örneği şu şekilde oluşturulur:

CFC’ler ayrıca nesneler olarak somutlaştırılabilir. person.cfc adlı bir CFC dosyası olduğu varsayıldığında, bu CFC’nin bir örneği şu şekilde oluşturulur:

				
					<cfset person = CreateObject("component", "Person") />
				
			

CFC’ler ayrıca CFML’de web hizmetleri oluşturma yeteneğinin temelini oluşturur . Bir CFC olağan şekilde oluşturulur ve CFC içindeki herhangi bir işleve eklenen access=”remote” özniteliği, bu işlevin SOAP tabanlı bir web hizmeti olarak çağrılmasını sağlar. CFML motoru otomatik olarak bir WSDL oluşturur ve web hizmetinin çalışması için gerekli tüm saplamaları oluşturur.