Tarih : 09-11-2009 | Yazan : Hüseyin Bora | Kategori : PHP

Pager Etiketi sayfalama yapmak amacıyla kullanılır.İki farklı kullanım vardır birinci kullanım şeklinde entity niteliğine varlık sınıfının adı.
Limit niteliğine gösterilecek kayıt sayısı yazılır eğer FQL etiketinde olduğu gibi bir sonuc kümesi elde edilmek isteniyora resource niteliğine geri alınacak sounuc kümesinin adı yazılmalıdır.
Eğer php faces framework ü URI modunda kullanıyorsanız pager nesnesinin uri biçimde sayfalama oluşturması için pager etiketinin type niteliğine path değerini vermeniz gerekir.
Örnek Pager ve Grid bileşenlerinin birlikte kullanımı
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import prefix="f" taglib="phpf.ui.*"/>
<@import prefix="db" taglib="phpf.db.*"/>
<f:grid id="grid" width="100%" bind="$liste" border="1">
<@item key="no" title="Urun no" />
<@item key="ad" title="Urun adı"/>
<@item key="fiyat" title="fiyat"/>
<@item input="img" key="resim" title="Resim"/>
<@item input="link" title="Detay" url="testet.php?edit=$no"/>
</f:grid>
<db:pager id="pager" limit="3" entity="urun" resource="liste"
previous="Önceki" next="Sonraki"/>
</faces>
</body>
</html>
Pager etiketinin query niteliği FQL secim işleminden sonraki FQL cümlelerini kabul eder
Örnek Fiyat aralığı
<db:pager id="pager" type="path" limit="3" entity="urun" resource="liste"
query="WHERE urun.fiyat >=50 AND urun.fiyat<=100"/>
Pager bileşeninin diğer kullanımı ise veritabanı sorgularını Kontrollcü içerisinde yapıp pager bileleşenine count niteliğne toplan kayıt sayısını ve limit niteliğinede sayfada gösterilecek kayıt sayısı verilmelidir.
Örnek
Görünüm
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import prefix="c" taglib="phpf.core" type="static"/>
<@import prefix="db" taglib="phpf.db.*"/>
<table border="1" align="center">
<thead>
<th>Urun NO</th>
<th>Urun Adı</th>
<th>Fiyat</th>
<th>Resim</th>
</thead>
<c:foreach var="#{$this.list}" item="$urun">
<tr>
<td>#{$urun.no}</td>
<td>#{$urun.ad}</td>
<td>#{$urun.fiyat}</td>
<td><img src="#{$urun.resim}"/></td>
</tr>
</c:foreach>
</table>
<db:pager id="pager" limit="5" count="100"/>
</faces>
</body>
</html>
Facete Controller tarafı
<?php
import("phpf.controllers.facete");
import("dbf.persistence");
import("entity.*",true);
import("phpf.db.pager");
class Urunler extends Facete {
protected $list;
public function Urunler() {
parent::Facete();
$this->render("urunler.html");
}
public function prerender() {
$em = EntityManager::getInstance();
$query= $em->createQuery("Select count(u.no) from urun u");
$this->pager->setCount($query->execute()->getSingle());
$query= $em->createQuery("Select u from urun u GROUP BY u.no ".$this->pager->getLimitQuery());
$this->list =$query->execute()->getResultList();
}
}
?>
Pager bileşeninin QueryString den aldığı p değişkeni istenirse değiştirile bilir bunun için bilşen tanımı view dosyasında yapılırken request niteliğne işlenecek değişken adı yazılır.
<db:pager id="pager" limit="3" count="10" request="sayfa" type="path"/>
Tarih : 09-11-2009 | Yazan : Hüseyin Bora | Kategori : FDL, Faces ORM, PHP, PHP Faces, PHP ORM
SQL etiketi query niteliğine paremetre olarak verilen SQL sorgusu işletir ve id niteliğine verilen isim ile bir sonuc kümesi getirir.
Örnek
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import prefix="c" taglib="phpf.core" type="static"/>
<@import prefix="sql" taglib="phpf.db.sql"/>
<sql:sql id="results" query="select * from urun"/>
<table border="1" align="center">
<thead>
<th>Urun NO</th>
<th>Urun Adı</th>
<th>Fiyat</th>
<th>Resim</th>
</thead>
<c:foreach var="#{$results}" item="$urun">
<tr>
<td>#{$urun.no}</td>
<td>#{$urun.ad}</td>
<td>#{$urun.fiyat}</td>
<td><img src="#{$urun.resim}"/></td>
</tr>
</c:foreach>
</table>
</faces>
</body>
</html>
FQL Etiketi
FQL etiketi query niteliğine paremetre olarak verilen FQL sorgusu işletir ve id niteliğine verilen isim ile bir sonuc kümesi getirir.
Örnek
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import prefix="f" taglib="phpf.ui.*"/>
<@import prefix="fql" taglib="phpf.db.fql"/>
<fql:fql id="results" query="select u from urun u"/>
<f:grid name="grid" height="30%" width="75%" bind="$results" border="1">
<@item key="no" title="no" />
<@item key="ad" title="Urun adı"/>
<@item key="fiyat" title="fiyat"/>
</f:grid>
</faces>
</body>
</html>
SQL ve FQL etiketlerine @item etiketinin value niteliği ile parametre aktarılabilir.
Örneğin aşağıdaki gibibir ifademiz olsun
SELECT u FROM urun u WHERE u.fiyat >? AND u.fiyat <?
Örnek fiyat aralığı
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import prefix="f" taglib="phpf.ui.*"/>
<@import prefix="fql" taglib="phpf.db.fql"/>
<fql:fql id="results" query="select u from urun u WHERE u.fiyat >? AND u.fiyat <?">
<@item value ="100"/>
<@item value= "500"/>
</sql:fql>
<f:grid name="grid" height="30%" width="75%" bind="$results" border="1">
<@item key="no" title="no" />
<@item key="ad" title="Urun adı"/>
<@item key="fiyat" title="fiyat"/>
</f:grid>
</faces>
</body>
</html>
Tarih : 20-10-2009 | Yazan : Hüseyin Bora | Kategori : Faces ORM, PHP, PHP ORM

Varlık sınıflarını kendiniz yazmak zorunda değilsiniz siz sadece veritabanınızı tasarlayın bu program varlık sınıflarını sizin için oluşturacaktır. Ancak tablolar arasıdaki ilişkileri tablolarınızı oluştururken tanımlayım bu program ilişkileri tanır.
http://php-faces.googlecode.com/files/generator.zip programı bu adresten indirebilirsinin unutmadan programın çalışabilmesi için sisteminizde JVM bulunmalı! generator.jar isimli dosyayı çalıştırdığınızda kaşınıza aşağıdaki gibi bir pencere gelecek buradan gerekli ayarlamaları yapıp generate butonuna basın ve varlık sınıflarının kayıt edileceği dizini secin. Bundan sonra PHP faces entity generator programının sizin için nasıl PHP kodladığını görün.
Tarih : 16-10-2009 | Yazan : Hüseyin Bora | Kategori : Faces ORM, PHP, PHP ORM
PHP ORM
PHP Faces ORM tek başına kullanabilirsiniz bunun için öncelikle aşağıdaki adresten ORM çatısını indirin. İlgili dosyaları bir dizine çıkarın ve kullanacağınız sunucuya taşıyın.
PHP ORM indir.
Yapılandırma
PHP ini dosyanızdan aşağıdaki eklentilerin kullanılabilir halde düzenleyin
extension = pdo.so
extension = pdo_sqlite.so
extension = sqlite.so
extension = pdo_mysql.so
Bir yapılandırma dosyası hazırlayın örneğin config.php dosyası olabilir
Örnek yapılandırma dosyası
define("DB_CONNECTION_STRING","mysql:host=localhost;dbname=faces");define("DB_USER","root");define("DB_PASS","abc345");
define("DB_CONNECTOR","PDO");>require_once "facespersistence/persistence.php";
ORM katmanını kullanmak istediğimiz php dosyalarında yukarıda oluşturduğumuz config.php dosyasını çağırmamız gerekecek.
require_once “config.php”;
Bir örnekle açıklamaya çalışalım aşağıdaki gibi bir varlık sınıfımız models klasöründe kayıtlu bulunsun olsun.
class Urun extends Entity
{
private $no;
private $ad;
private $fiyat;
function get($name) {
return $this->$name;
}
function set($name,$value) {
$this->$name = $value;
}
}
Faces ORM ile birlikte importmodels(”models”); fonksiyonu gelmekte aşağıdaki örneği inceleyin.
require_once "config.php";
importmodels("models");
$session = EntityManager::getInstance();
$query =$session->createQuery("select u from Urun u where u.no=10");
$query->execute();
$urunler =$query->getSingle();
echo "<pre>";
print_r($urunler);
echo "</pre>";
$urun = new Urun();
$elma->ad= "Elma";
$elma->fiyat="11.23";
$session->save($elma);
Tarih : 26-09-2009 | Yazan : Hüseyin Bora | Kategori : FDL, Faces ORM, PHP Faces
Doğrulayıcı(Validator) sınıfları durağan(static) metotları kullanan sınıflardır. işlerinizi kolaylaştırması ve yazılımın bütünleşik parçalar halinde kolektif bir yapıda çalışmasına olanak sağlar.
Bir doğrulama metodunun tanımlaması aşağıdaki gibidir
static function required(Component $c,Component $m,$message,$success)
Birinci parametre “Component $c” doğrulama işleminin yapıldığı bileşen
İkinci parametre “Component $m” mesajların yazdırılacağı bileşen
Üçüncü parametre uyarı mesajı
Dördüncü parametre doğrulama mesajı
Örneğin yeni üye kaydı için bir üye kayıt formumuzun olduğunu ve aynı ismi taşıyabilecek sadece bir üye olduğunu düşünelim.
Bunun için Uyekontrol adında bir sınıf oluşturup varmi ismini taşıyan bir doğrulama metodu ekliyorum
class uyekontrol
{
static function varmi(Component $c,Component $m,$message,$success)
{
$sorgu = EntityManager::getInstance()->createQuery("select u from uyeler u where uye.adi =:uyead");
$sorgu->bindParam("uyeadi", $c->getText);
$sorgu->execute();
$sonuc =$sorgu->getSingle();
if($sonuc!=null){
$m->setText($message);
return >true;
}
$m->setText($success);
return >true;
}
}
Şimdi oluşturduğumuz doğrulama sınıfını view (görünüm) içerisinde kullanalım
<faces>
<@import prefix="f" taglib="phpf.ui.*"/>
<f:form method="post" name="uyeform">
Uye adi :<f:textbox
name="uyeadi"
validator="uyekontrol"
rule="varmi"
success="Uye adi doğrulandı "
message=" Daha önce bu isimde bir üye kayıt olmuş farklı bir isim deneyin! "
messagefor="msgbox"
/>
<f:message id="msgbox"/>
<f:button name="kaydet" text="Gönder" onclick="actionevent" forname="uyeform"/>
</f:form>
</faces>
Validador sınıfımızı controller içerisinde import ediyoruz
import("phpf.controllers.facete");
import("dbf.persistence");
import("dogrulayicilar.uyekontrol",true);
class Controller extends Facete{
function Controller(){
parent::Facete();
$this->render("uyekayit.phpf");
}
function kaydetClicked($evt){
$uye = new uye();
$uye->adi = $this->uyeadi->text;
$uye->save();
}
}