
PHP Faces Olay yönelimli MVC Framework. PHP Faces ile Java da ya da VB,Delphi deki gibi olay yönelimli programlama yapablirsiniz.
HTML viewlari içinde ilkez kullanılan bir yöntem olan pattern kullanımın tadını yaşayabilirsiniz.
PHP Faces Framework İçerisinde iki farklı dil barındırıyor.
View (Görünün için) FDL(Faces Definition Language) (Yüz Tanımlama Dili)
Model (Kalıp için) FQL (Faces) Query Language) (Yüz Sorgulama Dili)
PHP faces in özellikleri aşağıdaki gibidir.
Bağlantılar
PHP Faces framework u indirmek için
http://code.google.com/p/php-faces/
PHP Faces Türkçe blog sayfası
http://www.webmahsulleri.com/
Çevrim içi PHP Faces Framework örnekleri
http://phpfaces.webmahsulleri.com/
Merhabalar, Bu video da PHP Faces uygulama geliştirme çatısı üzerine girişi ve kurulumunu anlatmaya çalışacağım. Öncelikle PHP Faces Zip dosyasını bilgisayarımıza kaydedip, bu dosyaları localhostumuza veya kullanmak istediğimiz hostun içerisine çıkarıyoruz. Ben bu dosyaları önceden indirdim ve localhostumun çalıştığı dizine çıkardım. Yine her zamanki gibi bir index.php dosyamız var bu dosyanın içeriğine baktığımız zaman dördüncü satır bir hayli öneme sahip Dispacher in dispach metodu üç parametre kabul ediyor birinci parametresi application dizini içerisinde hangi klasör içerisinde çalışacağımızı Yani birinci application ımızın uygulamamızın adı, ikinci birincil durumda olan yani çalışacak olan kontrolcü sınıfımızın adı Üçüncü parametre ise framework ümüzün kurulu olduğu url adresi, url adres satırıdır.
Bu yapılandırmayı sisteminizin yapılandırmasına göre değiştirebilirsiniz Diğer bir ayar dosyası ise applications içerisindeki config.php Burada veritabanı yapılandırmanızı yapabilirsiniz
DB_CONNECTION_STRING tanımlamasına veritabanızın adını ve hostunuzun adını DB_USER ve DB_PASS a kullanıcı adınız ve passwordünüzü yazabilirsiniz. Son olarak 15 inci satırda eğer phpf uzantılı dosyaları kullanmak istiyorsanız bu satıra yine PHP Faces Framework ün url satırını eklemenizde fayda var.
PHP Faces in kararlı bir şekilde çalışabilmesi için Apache rewrite modülü ve veritabanı işlemleri için php_pdo eklentisinin bulunması lazım.
PHP Faces in MVC modülüne baktığınız zaman Kontrolcüler controllers dizini içerisinde HTML ve diğer benzer dosyalar Views (Görünüm) klasörü içerisinde Model yada entityes varlık sınıflarınız entityes yada model bu klasörün ismini siz kendinizde belirleyebilirsiniz.
Evet herşey uygunsa zaten PHP Faces doğrudan localhostta çalışır durumda gelecek eğer tabiki phpfaces dizini içerisine kurmuşsanız Hemen deneyelim bakalım bizde çalışacak mı.
Evet herşey doğru ise şu şekilde bir ekran gelecek karşınıza
Şimdi bir kontrolcü oluşturmak istiyorum, Hemen yeni bir dosya açalım.
import metodu bir sözel string parametre alır ve genellikle bir dizin veya dosya adıdır.
<?php
import("phpf.controllers.facete");
?>
Evet bu satırı biraz daha incelersek phpf dizininde controllers dizininde facets.php dosyasını dosyama eklemesini söyledim.Hemen kontrolcü sınıfımızı oluşturalım. Kontrol olsun. Sınıfımızı Facete den genişletiyorum. Kurucu metodumuzu yazalım. Bu arada şunuda belirteyim sınıf yani Kontrolcü sınıf adımızın ilk harfi büyük harfle başlayacak, ve bu dosya adımızla aynı isimde olmak durumunda
<?php
import("phpf.controllers.facete");
class Kontrol extend Facete(){
function Kontrol()
{
parent:Facate();
echo "Kontrolcu çalıştı";
}
}
?>
controllers dizini içerisine kontrol.php yi kaydediyorum. Evet kontrolcumuz çalıştı zamanda kontrolcü çalıştı diye bir mesaj verelim.
Şimdi tekrar tarayıcımı açıyorum ve adres satırına kontrolcüm hangi isimdeyse bu ismi yazıyorum.
http://localhost/phpfaces/kontrol
evet kontrolcü çalıştı mesajını aldım. Şimdi birde view (görünüm) dosyası tanımlayayım. PHP Faces olay yönelimli programlamaya destek verdiği için bileşenlere de destek verir. Eğer faces bileşenleri kullanacaksanız bunları view dosyasını tanımlarken <faces> ve </faces> etiketleri arasına yazacaksınız.
import edelim taglib parametresi yine bir dizin adı ve veya dosya ismi alabilir. phpf.ui.* demekle ui dizini içerisindeki bütün dosyaları görünüm içerisine eklemesini söyledim. prefix tanımlaması ile bileşenlerime hangi isim üzerinden erişeceğimi belirtmiş oldum.Hemen bir tane buton ekleyelim, Butonumuz olsun evet adı butonumuz. Text niteliği butonumuzun üzerinde yazılı olacak yazıyı belirtiyoruz.
<faces>
<@import taglib="phpf.ui.*" prefix="f"/>
<f:button name="butonumuz" text="tıkla"/>
</faces>
evet şimdi kontrolcüme tekrar dönüyorum Kontrolcünün render metodu bir faces view dosyasını yorumlar ve tarayıcıya görüntülemesi için yorumladığı bu dosyayı iletir az önce yazdığımız dosyanın adı gorunum.phpf olsun uzantısıda. Evet kontrolcüye tekrar dönüyorum gorunum.
<?php
import("phpf.controllers.facete");
class Kontrol extend Facete(){
function Kontrol()
{
parent:Facate();
$this-render("gorunum.phpf");
}
}
?>
Tekrar tarayıcımıza dönüyorum sayfayı yeniliyorum. Evet böyle bir dosyanın olmadığı mesajını aldım demekki dosya yanlış yazdık. Dosyanın ismini görünüm sayfamızı yeniliyorum, evet tıkla diye bir butonumuz oluştu. ancak tıkladığımızda hiç birşey olmuyor.
Daha öncede söylediğim gibi phpfaces olay yönelimli programlamaya destek veren bir yapıya sahip Şimdi bu butonumuza tıklandığı zaman bir click olayı meydana gelir. ve bu click olayını kontrolcümüz yakalar. Şimdi hemen bir olay oluşturalım. Javascriptteki gibi bir onclick yazıyoruz ve onclick event ının içine actionevent yazdığım zaman bir action olayı meydana gelir.
<faces>
<@import taglib="phpf.ui.*" prefix="f"/>
<f:button name="butonumuz" text="tıkla" onclick="actionevent"/>
</faces>
Tetiklenir ve bunu kontrolcümüz ilgili metodlarıyla yakalamaya çalışır. Hemen metod yakalamayı olay yakalamayıda anlatalım. Olay yakalarken mesela click olayı patched kontrolür kullanıyorsak bu şekilde butonumuzun yani nesnemizin adı hatırlarsak ne isim vermiştim "butonumuz" Clicked. $this->butonumuz artık bir buton nesnemiz var. Butonumuz text az önce belirttiğim gibi üzerinde yazan yazı.
<?php
import("phpf.controllers.facete");
class Kontrol extend Facete(){
function Kontrol()
{
parent:Facate();
$this-render("gorunum.phpf");
}
protected function butonumuzClicked($evt){
$this->butonumuz->text = " bana tıkladınız ";
}
}
?>
Yani butona tıklandığı zaman butonumuzun üzerindeki yazıyı Bana tıkladınız olarak değiştireceğiz. deneyelim bakalım programımız çalışıyor mu? Tıkla butonuna tıklıyorum. Evet tıkla butonuna tıkladığımız zaman bana tıkladınız olarak değiştirdi gorunum.phpf dosyasına birde textbox yani text ekleyelim.
İsmi yazı olsun text boş olsun onclicktede birşey olmasın yada "isminiz" yazalım text ine. Evet şimdi çalıştıralım tekrar.
<faces>
<@import taglib="phpf.ui.*" prefix="f"/>
<f:button name="butonumuz" text="tıkla" onclick="actionevent"/>
<f:textbox name="yazi" text="isminiz"/>
</faces>
Class textbox , evet isminiz adında mesaj yazan bir text box ımız oldu şimdi buradaki ismi alıp butonun buradaki ismi üstüne yazdırmayı deneyeceğiz Hemen kontrolcümüze tekrar dönüyorum kontrolcümüzün text ine this->yazi->text diyorum.
<?php
import("phpf.controllers.facete");
class Kontrol extend Facete(){
function Kontrol()
{
parent:Facate();
$this-render("gorunum.phpf");
}
protected function butonumuzClicked($evt){
$this->butonumuz->text = $this->yazi->text;
}
}
?>
Evet bakalım, bora isminiz, ismimiz