CodeIgniter, kendi kütüphaneleri üzerinde oynama izni veren elastik bir yapıya sahip bir MVC çatısıdır. Bu yazıda model kütüphanesi üzerinde en sık kullandığımız fonksiyonları ekleyerek nasıl genişleteceğimizi anlatacağım.
Model kütüphaneleri, veritabanı ile Controller dosyaları arasında bağlantı sağlayan elemanlardır. Controller dosyasından Model dosyasına aktarılan bilgilerle veritabanı üzerinden bilgi çekimi, eklenmesi, silinmesi vb. gibi işlemler yapılır. Genellikle kullanım şekli her Controller dosyası için özel hazırlanmış bir Model dosyası şeklindedir. Ancak bir çok farklı isimdeki Model dosyasının içeriği benzerdir.
Bu benzerlikleri tekrar tekrar yazmamak için Model kütüphanesini genişletmemiz gerekir. Tüm farklı Model dosyalarında eklme, sorulama, silme ve yenileme işlemleri yaptığımız için bu işlemleri içerecek şekilde Model kütüphanesini genişletelim. Öncelikle application/libraries dizini altına MY_Model.php isimli bir dosya yaratalım. MY_Model.php dosyamızın içeriği aşağıdadır:
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class MY_Model extends Model {
function MY_Model() {
parent::Model();
}
function ekle($tablo, $dizi) {
$this->db->insert($tablo,$dizi);
if ($this->db->insert_id() > 0) return TRUE;
else return FALSE;
}
function oku($tablo,$dizi) {
$this->db->get_where($tablo,$dizi);
if($query->num_rows() > 0) return $query->result_array();
else return FALSE;
}
function yenile($tablo,$dizi,$id) {
if($this->db->update($tablo,$dizi,array('id' => $id))) return TRUE;
else return FALSE;
}
function sil($tablo,$id) {
if($this->db->delete($tablo,array('id' => $id))) return TRUE;
else return FALSE;
}
}
Yukarıdaki kodlardan da takip edileceği üzere her Model dosyasında tekrar tekrar yazmamızı önleyen minimum kodları eklemiş olduk. Bundan sonra veritabanına bilgi eklemek istersek, kendi model dosyamızdan buradaki fonksiyona ilgili değişkenleri göndermemiz yetecektir. MY_Model.php dosyamızı kullanırken, yine her Controller dosyasına özel hazırlayacağımız Model dosyasındaki kullanımı şöyle olacaktır:
Üyeler hakkında çalışma yaptığımız bir Model dosyamız olduğunu farz edelim. Bu dosyamız application/models dizini altında bulunan uye_model.php isimli dosyamız olsun. Dosyanın içeriği aşağıdadır:
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Uye_model extends MY_Model {
function uye_model()
{
parent::MY_Model();
}
function uye_ekle($dizi)
{
if($this->ekle('uye',$dizi)) return TRUE;
else FALSE;
}
function uye_oku($id)
{
if($this->oku('uye',array('id' => $id))) return TRUE;
else FALSE;
}
function uye_yenile($dizi)
{
if($this->yenile('uye',$dizi, array('id' => $dizi['id']))) return TRUE;
else FALSE;
}
function uye_sil($id)
{
if($this->sil('uye',array('id' => $id))) return TRUE;
else FALSE;
}
}
Yukarıdaki kodlarda dikkat etmemiz gereken en önemli konu Uye_model sınıfının Model sınıfının değil de MY_Model sınıfının genişletilmiş hali olduğu konusudur. Böylelikle en başta anlattığımız ekle(), oku(), sil() ve yenile() fonksiyonlarını kullanabilir hale geliriz. Benzer şekilde makale isimli bir modelimiz olsa, onun için sadece uye_model.php dosyamızın içeriğini uygun şekilde değiştirerek kullanabiliriz.
Bu yazı, kütüphane genişletme mantığının nasıl çalıştığını ve hangi hallerde kullanılmasının faydalı olacağını anlatmak için hazırlanmıştır. Uygulama yaparken kendi amacınıza uygun olarak sürekli tekrarlanan fonksiyonlarınızı belirleyip, ilgili CodeIGniter kütüphanesini genişleterek kullanmak sizlerin insiyatifindedir.
Permalink | Yazarı : Fatih BAZMAN | Yorum Ekle | Etiketler : kütüphane extend genişletme
Türkiye