Pipernate ile servis sınıfları oluşturmak

= Pipernate ile servis sınıfları oluşturmak =

Pipernate yazarken aslında çektiğimiz sıkıntılarada biraz çözüm getirmek için bazı düşüncelerimiz vardı, yaptığımız sunum katmanındaki mesela haberler.php için olabildiğince php kodlarını dışarda bırakmak, iş gerektiren kısımları servis katmanına aktarmak ve kod karmaşıklığından uzaklaşmak idi. Bunun için pipernate altına services adı altında bir paket koyduk ve iş gerektiren tüm kodlarımızı bu katman altına aldığımız sınıflara yaptırmaya başladık. Artık sunum yapan sayfalarımız sadece servisteki classın içindeki methodlara ulaşıp doldur, boşalt yapmaktan başka bir iş yapmıyor. Böylece bakım ve yeni özelliklerde eklemek kolaylaştı :D

Şimdi bu sınıfları nasıl oluşturacağınızı anlatacağım bunun için size biraz DbService sınıfından bahsedeyim, bu sınıf sizle db arasında bir köprü, bunun içindeki methodların hepsi tüm işleriniz için yeterli olan methodlarınızı tutmakta.

*Bu makale güncellenmiştir.*
* Mevcut servisi interface ile desteklendi.

*INTERFACE*


< ?php
   interface Ifmembers_service {

            ############## LIKE ENUMS #################
   	   const modelName = "fusers";
  	   const extendModelName = "ffollowers";

   	   public function getUserProfil($finkUserID);
   	   public function getUsers($limit, $orderBy);
   	   public function getFollowers($finkUserID);

   }
?>

*SERVICE CLASS*

  < ?php

  require_once '../system/DbService.php';  // ana service katmanı
  require_once 'serviceInterfaces/Ifmembers.service.php'; //interface 

  require_once MODELPATH.'fusers.php';    // kendi servisimde kullanmak için
  require_once MODELPATH.'ffollowers.php';

  class fmembers_service extends DbService implements Ifmembers_service {

  	public function __construct(){
  		parent::__construct();
  	}

  	public function getUserProfil($finkUserID){
          $this->criteria = new Criteria(Ifmembers_service::modelName);
  	  $this->criteria->where("fid", $finkUserID);
  	  $this->modelname = $this->uniqueResult($this->criteria);
  	  return $this->modelname;
  	}

     public function getUsers($limit, $orderBy){
     	 $this->criteria = new Criteria(Ifmembers_service::modelName);
  	 $this->criteria->orderBy("fid",$orderBy);
  	 $this->criteria->limit(0,$limit);
  	 $this->modelname = $this->select($this->criteria);
  	 return $this->modelname;
  	}

  	public function getFollowers($finkUserID){
  	  $this->criteria = new Criteria(Ifmembers_service::extendModelName);
  	  $this->criteria->where("fiduser", $finkUserID);
  	  $this->extendModelname = $this->select($this->criteria);

  	   foreach ($this->extendModelname->asArray() as $data){
  	     return $this->getUserProfil($data->fidfollower);
  	   }
  	}

}

Şimdi gördüğünüz gibi – extends DbService – ile DbService extend ettik. bookmark_service sınıfına ait construct methodun içine parent::__construct(); ile extend ettiğimiz DbService ile gerekli konfigürasyonu yaptık.

Sırada çağırıp test etme işi kaldı. user.php sayfamıza gidiyoruz. Servisimizi include ediyoruz.


  $service = new fmembers_service();
   $data =  $service->getUsers(10, "DESC");

    if($data->size() == 0){
     echo "There is no data!";
    }
     else{
     	print_r($data->asArray());
     }

Sonuç olarak dönen değerimizinde boş olup olmadığını kontrol ettikten sonra işlerimizi bitiyoruz. :)

Kolay ve hızlı kodlamalar

Tags: , , , , ,

  1. ahmet beslen’s avatar

    beynıne saglık…

Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>