Nesne Yönelimli PHP – Bölüm 3
6 Kasım 2009 / Kurtman Çelik /
Öncelikle
Tekrar merhaba, Nesne Yönelimli PHP dizisinin, son bölümüne hoşgeldiniz. Daha öncede bahsettiğim gibi eğer kendinizi bu konuda hazır hissetmiyorsanız, bölüm 1 ve bölüm 2 yazılarını tekrar etmenizi ısrarla tavsiye ediyorum. Temeller, bu konudaki en önemli parça.
Bu Yazıda
Bu yazıda, sürekli bahsettiğimiz MySQLi Veritabanı Sınıfını inşa edeceğiz ve bunu yaparken daha önceki konulardan öğrendiğimiz herşeyi kullanmaya çalışacağız.
- Değişkenler ve Yapıcı Metod,
- Temel Fonksiyonlar.
Başlıklarıyla ilglileneceğiz.
1. Değişkenler ve Yapıcı Metod
class.db.php adında yeni bir dosya oluşturun ve içine aşağıdaki kod bloğunu girin:
Açıklama satırlarını okumadan önce kodlara bakarak ne yapıldığını çözmeye çalışabilirsiniz.
<?php
/*
* class db
* @param Host
* @param User
* @param Password
* @param Name
*/
class db
{
var $host; //MySQL Host
var $user; //MySQL User
var $pass; //MySQL Password
var $name; //MySQL Name
var $mysqli; //MySQLi Object
var $last_query; //Last Query Run
/*
* Class Constructor
* Creates a new MySQLi Object
*/
function __construct($host, $user, $pass, $name)
{
$host = $this->host;
$user = $this->user;
$pass = $this->pass;
$name = $this->name;
$this->mysqli = new mysqli($this->host, $this->user, $this->pass, $this->name);
}
}
$db = new db('localhost', 'root', '', 'blog');
?>
Öncelikle, Nesne Yönelimli PHP’nin en önemli meselelerinden birini tamamlamış bulunıyoruz: Organiazyon!. İlk önce, bir veritabanına bağlanmak için gereken tüm bilgileri birer değişken olarak tanımladık ve ardından yapıcı (constructor) metod yardımı ile kullanıcıdan bu bilgileri girmesini istedik. Veritabanı bilgilerini yapıcı metod ile almamızın sebebi; biz daha sonradan bu sınıfı kullanmaya başladığımız sırada veritabanı bilgilerinin girilmesine gerek kalmamasının sağlanmasıdır. Böylelikle kullanıcı, bizim sınıfımızı ilk çağırdığında bir kereye mahsus, veritabanı bilgilerini girecek ve daha sonraki kullanımlarda bu bilgilere ihtiyaç duymayacaktır.
En son satırda ise bu sınıfımızın bir nesnesini tanımlayarak, örnek veritabanı bilgileri giriyoruz.
2. Temel Fonksiyonlar
Select
Şimdi, yukarıdaki kod bloğu sayesinde veritabanı bağlantısını kurmuş olduk, sıra geldi; gönderdiğimiz “SELECT” sorgu cümlesini veritabanı üzerinde çalıştıran fonksiyonun yazımına.
Aşağıdaki kod bloğunu sınıfımızın sonuna ekleyin:
/*
* Function Select
* @param fields
* @param from
* @param where
* @returns Query Result Set
*/
function select($fields, $from, $where)
{
$query = "SELECT " . $fields . " FROM `" . $from . "` WHERE " . $where;
$result = $this->mysqli->query($query);
$this->last_query = $query;
return $result;
}
Böylelikle, bir MySQL tablosu üzerinde gönderdiğimiz sorguyu çalıştırıp, sonuçları bize geri getiren bir fonksiyon yazmış olduk.
Kullandığımız değişkenler; $fields >alanlar, yani tablodan hangi alanların okunup geri döndürüleceği, $from > tablo adı, yani sorgu cümlesinin hangi tablo üzerinde çalıştırılacağı, $where > nereden, yani tablodan okunacak bilgilerin hangi kritere göre filtreleneceği.
Son olarak, sorgu çalıştırılır ve geri dönen değerler $result adındaki değişkende tutulur ve return komutu ile uygulamamıza geri gönderilir.
Insert
Veritabanına yeni veri kaydı göndermek istediğimizde kullanacağımız fonksiyonumuzu yazalım:
/*
* Function Insert
* @param into
* @param values
* @returns boolean
*/
function insert($into, $values)
{
$query = "INSERT INTO " . $into . " VALUES(" . $values . ")";
$this->last_query = $query;
if($this->mysqli->query($query))
{
return true;
} else {
return false;
}
}
En basit fonksiyonlardan bir tanesi. Kullanıcıdan sadece 2 değişken almamız yeterli; Tablo adı ve eklenecek değerler. Bu fonskyionda diğerine göre; geriye tablo kayıtları döndürmek yerine şöyle bir yol izledik: Sorguyu çalıştır, eğer kayıt ekleme başarılı olursa geriye true değeri döndür, eğer kayıt eklemede sorun çıkarsa geriye false değeri döndür.
Delete
En basit haliyle veritabanından kayıt giren fonksiyonumuz:
<?php
/*
* Function Delete
* @param from //Silinecek kayıdın hangi tablodan silineceği.
* @param where //Silme filtresi, hangi koşul uyuyorsa ona göre silme yap.
* @returns boolean //Eğer silme işlemi düzgün tamamlanmışsa geriye true döndür, hata oluşmuşsa geriye false döndür.
*/
function delete($from, $where)
{
$query = "DELETE FROM " . $from . " WHERE " . $where;
$this->last_query = $query;
if($this->mysqli->query($query))
{
return true;
} else {
return false;
}
}
?>
Birkaç öneri
Muhtemelen yazdığımız her fonksiyondaki $last_query (son sorgu) değişkenini, dikkatinizde kaçmamışdır. Sınıfımızın en başında tnımladığmız bu değişken, sınıfımız aracılığı ile çalıştırılmış en son sorguyu hafızada tutmak için kullanılıyor. Nedeni ise: son derece hayati önem kazanan sorguların, hata ayıklama işlemlerinin yapılmasına yardımcı olmasıdır. Bir hata meydana geldiğinde aynı sorguyu tekrar çalıştırmakdansa bu değişkene bakarak hatayı bulmaya çalışabilirsiniz. Diğer bir değişken ise $last_error (son hata), yazmış olduğumuz fonksiyonlardaki hata olma olasılıklarına karşı, kullanıcıyı bilgilendirmek amacıyla kullanılabilir. Bir hata meydana geldiğinde, hata mesajını bu değişkene aktarıp return komutu ile kullanıcıyı haberdar edebilirsiniz.
Update sorgusunu ise size bırakıyorum, ne kadar öğrendiğinizi ispatlamak adına update fonksiyonunu siz kendiniz yazmaya çalışabilirsiniz.
Sonuç
Bu yazıyla birlikte, Nesne Yönelimli PHP”de giriş seviyesinde bilgi birikimine sahip olmuş olduk. Umarım öğrendiğimiz bu temel bilgiler üzerine kendinizi daha çok geliştirir ve ileri konular hakkındada bilgi sahibi olursunuz. Takip ettiğiniz için teşekkürler, iyi çalışmalar.
Kurtman Çelik
kurtmancelik.wordpress.com
Kaynak: http://buildinternet.com/2009/07/an-introduction-to-object-oriented-php-part-3/
ÇOK OKUNANLAR
- Banka İçin Uygulama Geliştirme Uzmanları Aranıyor 0 yorum | 42 view(s) per day
- CETURK Forum Sorumluları Belli Oldu 0 yorum | 29 view(s) per day
- Windows 7'nin 64 bit başarısı 0 yorum | 28 view(s) per day
- Oracle Veritabanı Yönetimi Semineri 0 yorum | 27 view(s) per day
- Ericsson Türkiye - Genel Başvuru 0 yorum | 25 view(s) per day
- FileNet P8 Platformu ile Uygulama Geliştirme 0 yorum | 21 view(s) per day
- Bilgisayar Mühendisleri aranıyor 0 yorum | 20 view(s) per day
- IBM FileNet P8 Sistem 0 yorum | 19 view(s) per day
- PL/SQL BLOK YAPILARI&VERİ TİPLERİ 0 yorum | 18 view(s) per day
- SQL Server 2008 Express Edition’ı Kurmak 1 yorum | 18 view(s) per day
GERİ BİLDİRİMLER
Geri bildirim yok.Yorum yapmak için giriş yapınız.







