Bir faces bileşeni (component) oluşturmak için sınıfınızı Component sınıfından genişletirsiniz.
basit bir bileşenin en az iki metodu bulunmalıdır. Kurucu metod ve startTag metodu.
Kurucu metodun iki parametresi bulunur birinci parametresi bir FacesController ikinci parametresi ise view dosyasında etiket olarak tanımlanan bileşenin nitelikler dizisidir.
function construct(FacesController &$controller,$args=null)
startTag metodu bileşen etiketinin başlangıç için çıktı üreten metodudur. Bir etiket açıldığında çalıştırılır.
endTag metodu bileşen etiketinin kapatıldığında çalıştırılan metodu.
Basit bir örnek
import("phpf.ui.component"); class Kalinyaz extends Component{ function Kalinyaz (FacesController &$controller,$args=null){ parent::Component($controller,$args); } function startTag() { return '<strong>'; } function endTag() { return '</strong>'; }}
Örneğimizde Kalinyaz isminde bir bileşen tanımladık <f:Kalinyaz> </f:Kalinyaz> etiketleri arasındaki metni kalın yazı tipi ile tarayıcıda göstermek istiyoruz. Bileşenimizi kullanmak istediğimiz dizin içerisine kalinyaz.php adı ile kayıt ediyoruz.
Kalinyaz bileşenini view içerisinde kullanımı.
<faces> <@import prefix="my" taglib="dizinadi.kalinyaz"/> <my:kalinyaz> Bu yazı kalın olmalı </my:kalinyaz> Bu yazı normal </faces>
Bileşen içerisinde Niteliklere erişim.
Bileşenin attributes uyesi nitelikleri içeren bir dizidir nitelik değerlerine
$this->attributes[nitelikadi] şeklinde erişilebilir.
Yukarıdaki örneğimizi biraz daha geliştirip metin rengi ve metin boyunu uygulayan bir bileşen haline getirelim. Aşağıdaki örneği inceleyin
import("phpf.ui.component"); class Kalinyaz extends Component{ function Kalinyaz (FacesController &$controller,$args=null){ parent::Component($controller,$args); } function startTag() { $html = '<strong>'.'<font color="'.$this->attributes[renk]. '" size="'.$this->attributes[boy].'">' ; return $html; } function endTag() { return '</font></strong>'; }}
Yukarıda bileşenimize boy ve renk adında iki nitelik olduğunu görülebilir.
Bileşenimizin view içerisinde kullanımı.
<faces> <@import prefix="my" taglib="dizinadi.kalinyaz"/> <my:kalinyaz boy="10" renk="red"> Her hangi bir yazı </my:kalinyaz> </faces>
Component sınıfının doAttributes() metodu tüm nitelikleri eş değer ismi ile yerleştirir
function startTag() { return '<strong>'.'<font'. $this->doAttributes() .'>' ; }
<faces> <@import prefix="my" taglib="dizinadi.kalinyaz"/> <my:kalinyaz size="10" color="red"> Her hangi bir yazı </my:kalinyaz> </faces>
Bileşenlere eklenen öğeler bileşeninizin items uye dizinsinde yer alır
Items kullanımı için aşağıdaki örneği inceleyin
import("phpf.ui.component"); class Strong extends Component{ function Strong(FacesController &$controller,$args=null){ parent::Component($controller,$args); } function startTag() { $html = '<strong>'.'<font'. $this->doAttributes() .'>' ; foreach($this->items as $item) $html.= '<br/><a href="'.$item[url].'">'.$item[title].'</a>'; return $html; } function endTag() { return '</font></strong>'; } }
View içerisinde kullanımı
<faces> <@import prefix="my" taglib="mypath.strong"/> <my:strong name="test" size="4" face="Arial" color="red"> <@item url="http://www.google.com" title="google"/> <@item url="http://www.webmahsulleri.com" title="WebMahsulleri"/> bazı yazilar </my:strong> </faces> <p class="MsoNormal">
Bir faces bileşeni (component) oluşturmak için sınıfınızı Component sınıfından genişletirsiniz.
basit bir bileşenin en az iki metodu bulunmalıdır. Kurucu metod ve startTag metodu.
Kurucu metodun iki parametresi bulunur birinci parametresi bir FacesController ikinci parametresi ise view dosyasında etiket olarak tanımlanan bileşenin nitelikler dizisidir.
function construct(FacesController &$controller,$args=null)
startTag metodu bileşen etiketinin başlangıç için çıktı üreten metodudur. Bir etiket açıldığında çalıştırılır.
endTag metodu bileşen etiketinin kapatıldığında çalıştırılan metodu.
Basit bir örnek
import(“phpf.ui.component”);
class Kalinyaz extends Component{
function Kalinyaz (FacesController &$controller,$args=null){
parent::Component($controller,$args);
}
function startTag() {
return ‘<strong>’;
}
function endTag() {
return ‘</strong>’;
}
}
Örneğimizde Kalinyaz isminde bir bileşen tanımladık <f:Kalinyaz> </f:Kalinyaz> etiketleri arasındaki metni kalın yazı tipi ile tarayıcıda göstermek istiyoruz. Bileşenimizi kullanmak istediğimiz dizin içerisine kalinyaz.php adı ile kayıt ediyoruz.
Kalinyaz bileşenini view içerisinde kullanımı.
<faces>
<@import prefix=”my” taglib=”dizinadi.kalinyaz”/>
<my:kalinyaz name=”yaz”>
Bu yazı kalın olmalı
</my:kalinyaz>
Bu yazı normal
</faces>
Bileşen içerisinde Niteliklere erişim.
Bileşenin attributes uyesi nitelikleri içeren bir dizidir nitelik değerlerine
$this->attributes[nitelikadi] şeklinde erişilebilir.
Yukarıdaki örneğimizi biraz daha geliştirip metin rengi ve metin boyunu uygulayan bir bileşen haline getirelim. Aşağıdaki örneği inceleyin
import(“phpf.ui.component”);
class Kalinyaz extends Component{
function Kalinyaz (FacesController &$controller,$args=null){
parent::Component($controller,$args);
}
function startTag() {
$html = ‘<strong>’.'<font color=”‘.$this->attributes[renk].
‘” size=”‘.$this->attributes[boy].’”>’ ;
return $html;
}
function endTag() {
return ‘</font></strong>’;
}
}
Yukarıda bileşenimize boy ve renk adında iki nitelik olduğunu görülebilir.
Bileşenimizin view içerisinde kullanımı.
<faces>
<@import prefix=”my” taglib=”dizinadi.kalinyaz”/>
<my:kalinyaz name=”yaz” boy=”10″ renk=”red”>
Her hangi bir yazı
</my:kalinyaz>
</faces>
Component sınıfının doAttributes() metodu tüm nitelikleri eş değer ismi ile yerleştirir
function startTag() {
return ‘<strong>’.'<font’. $this->doAttributes() .’>’ ;
}
<faces>
<@import prefix=”my” taglib=”dizinadi.kalinyaz”/>
<my:kalinyaz name=”yaz” size=”10″ color=”red”>
Her hangi bir yazı
</my:kalinyaz>
</faces>














2 yorum
Deniz GİRGİNER diyor ki:
00:32 de 06 Aralık 2009 (UTC 3)
merhaba
phpfaces ı uygulamalarını çalıştırdığımda
Parse error: syntax error, unexpected ‘]’, expecting T_NS_SEPARATOR in E:\wamp\www\phpfaces\phpfaces\phpf\renderers\FacesRenderer.php on line 70
hatasını alıyorum. yardımcı olur musunuz?
apache 2.2.11
php 5.3.11
web klasörüne phpfaces ı açtığında /phpfaces sayfası gorunuyor. örneklerin linkine tıkladığımda yukarıdaki hata çıkıyor.
Hüseyin Bora diyor ki:
17:44 de 25 Mayıs 2010 (UTC 3)
Merhabalar vatani görevde olduğum için daha önce cevap yazamadım. sorun PHP 5.3 den kaynaklanmakta. PHP faces ın PHP5.3 uyarlmasını yaptım yakında dosyaları günceliyicem.