Kas

9

ORM Kütüphanesi ve Grid Table Kullanımı

By Hüseyin Bora

Grid bileşeni kendisine bind niteliği ile belirtilen Sınıf diziden bir HTML tablosu oluşturur. Oluşturulan tabloda hangi sutunların bulunacağı @item direktifi ile bildirilir. @item direktifinin key niteliğine Varlık sınıfının uye ismi title niteliğine ise sutunun başlığı yazılır.

Table

@item direktifi ile tabloya sınıf harici bilgi eklemek için input niteliği kullanılır.

<@item  input=”link” title=”Düzenle”  url=”testet.php?edit=$no”/>

Örneğin yukarıdaki @item direktifi ile düzenle başlıklı bir bağlantı oluşturulur ve bağlantı adresi url niteliği ile belirtilir.

Örnek Aşağıdaki gibi bir Varlık sınfımız olsun

<?php
/**
*  @Table(name = "urun")
*/
class Urun extends Entity
{
/**
* @Id
* @Column(name = "no")
*/

private $no;
/**
* @Column(name = "ad")
*/

private $ad;
/**
* @Column(name = "fiyat")
*/

private $fiyat;
/**
* @Column(name = "resim")
*/

private $resim;
function get($name) {

return $this->$name;
}
function set($name,$value) {
$this->$name = $value;
}
}
?>

Urunlerin listesini oluşturmak için aşağıdaki gibi bir kontrolcümüz olsun $list değişkenin içerisine veritabanından çektiğimiz bilgileri aktarıyoruz.

<?php

import("phpf.controllers.facete");

import("dbf.persistence");

import("entity.urun",true);
class UrunGrid extends Facete {

protected $list;

public function UrunGrid() {

parent::Facete();
$em = EntityManager::getInstance();
$query= $em->createQuery("Select u from urun u");
$query->execute();
$this->list = $q->getResultList();
$this->render("grid.html");
}
}
?>

Görünüm Dosyamız grid etiketinin bind niteliğine bind=”$this.list” eklememiz önemli

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import prefix="f" taglib="phpf.ui.*"/>
<f:grid name="grid" height="30%" width="75%" bind="$this.list" 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>
</faces>
</body>
</html>

            <@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"/>

Eki

25

PHP Faces PDF E-Kitap

By Hüseyin Bora

PHP Faces Türkçe Ekitap PDF Formatındaki dosyayı  indir

Eki

16

PHP ORM Tekbaşına kullanımı

By Hüseyin Bora

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");//sunucunuz ve veritabanı adı
define("DB_USER","root");//veritabanı kullanıcı adı
define("DB_PASS","abc345");
define("DB_CONNECTOR","PDO");//bu satırı değiştirmeyin
>require_once "facespersistence/persistence.php";// PHP ORM Persistence kütüphanesi

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.

/**
*  @Table(name = "urun")
*/
class Urun extends Entity
{
/**
* @Id
* @Column(name = "no")
*/

private $no;
/**
* @Column(name = "ad")
*/

private $ad;
/**
* @Column(name = "fiyat")
*/

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

Eyl

26

Doğrulama Sınıfları (Kendi Doğrulayıcılarınız)

By Hüseyin Bora

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);//uygulama dizini

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();
}
}

Eyl

25

Doğrulama Kullanımları(Validator sınıfı)

By Hüseyin Bora

Validator sınıfının metotları aşağıdaki gibidir.

  • required
  • equals
  • minLength
  • maxLength
  • mail
  • alpha
  • alpha_numeric
  • numeric
  • integer
  • betweenLength
  • between
  • boolean
  • test

required post edilen bileşinin içeriğinin boş olup olmadığını kontrol eder

Örnek

isim :<f:textbox
name="textbox"
validator=" validator"
rule="required"
message="Bu alan boş geçilemez"
messagefor="msgbox"/>
<f:message  name="msgbox"/>

equals post edilen bileşenin içeriğinin  test niteliği ile uyuşup uyuşmadığını  kontrol eder

Örnek

isim :<f:textbox
name="textbox"
validator="validator"
rule="equals"
test="200"
message="Hata girilen değer 200 değil "
messagefor="msgbox"
"/>
<f:message  name="msgbox"/>

minLength post edilen bileşenin içeriğinin karakter uzunluğunun  min niteliğinden büyük olup olmadığını   kontrol eder

Örnek

isim :<f:textbox
name="textbox"
validator="validator"
rule="minlength"
min="10"
message="En fazla 10 karakter "
messagefor="msgbox"
"/>
<f:message  name="msgbox"/>

maxLength post edilen bileşenin içeriğinin karakter uzunluğunun  max niteliğinden küçük olup olmadığını   kontrol eder

Örnek

isim :<f:textbox
name="textbox"
validator="validator"
rule="maxlength"
min=“5”
message="En az beş karakter girilmelisiniz !"
messagefor="msgbox"
"/>
<f:message  name="msgbox"/>

Mail post edilen bileşenin içeriğinin bir mail adresi olup olmadığını kontrol eder

Örnek

isim :<f:textbox
name="textbox"
validator="validator"
rule="mail"
message="Bu bir mail adresi değil !"
messagefor="msgbox"
"/>
<f:message  name="msgbox"/>

Alpha post edilen bileşenin içeriğinin bir sözel (string) olup olmadığını kontrol eder.

Örnek

isim :<f:textbox
name="textbox"
validator="validator"
rule="alpha"
message="Girilen değer sözel değil !"
messagefor="msgbox"
"/>
<f:message  name="msgbox"/>

alpha_numeric post edilen bileşenin içeriğinin bir karakterlerden ve sayılardan oluşup oluşmadığını olmadığını kontrol eder.

Örnek

isim :<f:textbox
name="textbox"
validator="validator"
rule="alpha_numeric"
message="Girilen değer sayı içermeli !"
messagefor="msgbox"
"/>
<f:message  name="msgbox"/>

Numeric post edilen bileşenin içeriğinin bir sayısal değer olup olmadığını kontrol eder.

Örnek

isim :<f:textbox
name="textbox"
validator="validator"
rule="numeric"
message="Uyarı girdiğiniz değer bir sayı değil !"
messagefor="msgbox"
"/>
<f:message  name="msgbox"/>

integer post edilen bileşenin içeriğinin bir tam sayı olup olmadığını kontrol eder.

Örnek

isim :<f:textbox
name="textbox"
validator="validator"
rule="integer"
message="Uyarı girdiğiniz değer bir tam sayı değil !"
messagefor="msgbox"
"/>
<f:message  name="msgbox"/>

betweenLength post edilen bileşenin içeriğinin uzunluğunun min ve max değerleri arasında olup olmadığını kontrol eder.

Örnek

isim :<f:textbox
name="textbox"
validator="validator"
rule="betweenLength"
min="5"
max="20"
message="Beş karakterden az Yirmi karakterden uzun veri girmeyiniz! "
messagefor="msgbox"
"/>
<f:message  name="msgbox"/>

Between post edilen bileşenin içeriğinin min ve max değerleri arasında olup olmadığını kontrol eder.

Örnek

isim :<f:textbox
name="textbox"
validator="validator"
rule="between"
min="0"
max="100"
message="Girilen sayı 0 ile 100 arasında değil ! "
messagefor="msgbox"
"/>
<f:message  name="msgbox"/>

Boolean post edilen bileşenin içeriğinin mantıksal(boolean) değer olup olmadığını kontrol eder.

Örnek

isim :<f:textbox
name="textbox"
validator="validator"
rule="Boolean"
message="Girilen değer mantıksal değil "
messagefor="msgbox"
"/>
<f:message  name="msgbox"/>

Test post edilen bileşenin içeriğinin bileşenin  test niteliğindeki mantıksal ifadenin uyuşup uyuşmadığını  kontrol eder.

Örnek

isim :<f:textbox
name="textbox"
validator="validator"
rule="test"
test="this.text >0 &amp;&amp; this.text >100 "
message=" Girilen sayı 0 ile 100 arasında değil ! "
messagefor="msgbox"
“/>
<f:message  name="msgbox"/>