pattern kavramı programlamada işaretleme dilleri açısından bir yeniliktir. ve bu yöntem ilk defa PHP faces ile tanıtılmaktadır.
patternler özetle bir veri tanımlaması biçimde bir şablon oluşturur ve bu tanımın uygulanmasını sağlar
daha anlaşılır bir şekilde . farklı bir kopyalama ve yapıştırma işlemi görmektedir. patternler sayesinde programcı birirlerine benzeyen etiket (tag) bloklarını tekrarından kurtulur.
PHP faces içerisinde 2 çeşit pattern vardır bunlar:
@pattern
@htmlpattern
@pattern PHP Faces bileşenleri içindir ve uygulanırken @ui direktif etiketi ile kullanılır.
@htmlpattern içerisindeki metni biraz farklı bir biçimde kopyalar içerisine HTML, XML vb yerleştirilebilir. @htmlpattern , @html direktif etiketi ile kullanılır.
@pattern
@pattern direktif etiketinin kendisine haz üç niteli vardır. bu nitelikten sonra gelecek nitelikler genişletilen faces bileşenine has niteliklerdir.
name :niteliği tanımlanan pattern (şablonun) ismidir.
prefix :niteliği genişletilcek bileşenin hangi isim uzayında bulunduğunu bildirir
extends : niteliği genişletilecek faces bileşeninin adıdır.
Örnek
<@import prefix="f" taglib="phpf.ui.button"/> <@pattern name="mybutton" prefix="f" extends="button" value="her hangi bir şey"/>
yukarıdaki örnekte button bileşeninden mybutton isminde yeni bir pattern tanımlanmış.
@ui
direktif etikeki @pattern ile tanımlanan bir şablonu uygular. İki niteliği vardır.
name : yeni oluşturulacak olan bileşenin adıdır.
pattern: kullanılacak olan pattern tanımlamasının adıdır.
Örnek patternnin uygulanması
<@ui name="mybutton1" pattern="mybutton"/> <@ui name="mybutton2" pattern="mybutton"/> <@ui name="mybutton3" pattern="mybutton" value="farklı bir yazı"/> <@ui name="mybutton4" pattern="mybutton" style="color:navy;font-weight:bold;" >
yukarıdaki 1. ve 2. satırlarda mybutton patterninden 2 örnek üretilmiş üçüncü satırta da mybutton patterninden yeni bir örnek üretilip value niteliğine “farklı bir yazı atanmış 4. satırda da mybutton pattern ninden yeni bir örnek üretilip style niteliğne color:navy;font-weight:bold; değeri atanmıştır.
sonucta html çıktısı aşağıdaki gibidir.
<input type="button" name = "mybutton1" id="mybutton1" value="her hangi bir şey"/> <input type="button" name = "mybutton2" id="mybutton2" value="her hangi bir şey"/> <input type="button" name = "mybutton3" id="mybutton3" value="farklı bir yazı"/> <input type="button" name = "mybutton4" id="mybutton4" value="her hangi bir şey" style="color:navy;font-weight:bold;"/>
@htmlpattern
yukarıda belirtiğim gibi htmlpattern içine gelen şablon metini kopyalar ve @html direktifi ile şablon uygulanır.
name niteliği oluşturulan patternin ismidir. @html direkttif etiketinin pattern niteliğine burada belirtilen isim yazılır.
Örnek @htmlpattern tanımlaması
<@htmlpattern name="html"> <div style="color:red;font-weight:bold;" > Senin Yazın </div> </@htmlpattern>
Örnek @html ile htmlpatternlerin uygulanması
<@html pattern="html"/>
Yukarıdaki örneğin çıktısı şu şekilde olur.
<div style="color:red;font-weight:bold;" > Senin Yazın </div>
paterrnleri istediğiniz sayıda kullana bilirsiniz
Örnek @html ile htmlpatternlerin uygulanması
<@html pattern="html"/> <@html pattern="html"/> <@html pattern="html"/>
Yukarıdaki örneğin çıktısı şu şekilde olur.
<div style="color:red;font-weight:bold;" > Senin Yazın </div> <div style="color:red;font-weight:bold;" > Senin Yazın </div> <div style="color:red;font-weight:bold;" > Senin Yazın </div>
html patternler ile birlikte php faces ifadeleride kullanılabilir
php faces ifadeleri #{ ve } aralığına yazılır.
Örnek başka bir htmlpattern tanımlaması
<@htmlpattern name="html2"> <div style="color:red;font-weight:bold;">test htmlpattern #{$i}</div> <!--@htmlpattern-->
Yukarıdaki pattern nin uygulanması
<@html pattern="html2"/>
Örneğin çıktısı
<div style="color:red;font-weight:bold;">test htmlpattern 1</div> <div style="color:red;font-weight:bold;">test htmlpattern 2</div> <div style="color:red;font-weight:bold;">test htmlpattern 3</div> <div style="color:red;font-weight:bold;">test htmlpattern 4</div> <div style="color:red;font-weight:bold;">test htmlpattern 5</div>













