Eyl.26

PHP OOP (Nesne Yönelimli Programlama) Ders 8 : OOP’de Temel Prensipler – Interface (Arayüz)

Buradaki arayüz, görsel bir arayüz gibi düşünülmesin. Soyutlama işlemine benzer. Aslında bir Class’a başlanmadan önce zorunlu olarak tanımlanması gereken metotların belirtildiği bir yapıdır. Yani bir Interface içinde tanımlanan metotlar, bu Interface tarafından genişletilen (implements ile yapılır, soyutlamada ise extend ile yapılıyordu.) alt Class’larda mutlaka yazılmalı, yani oluşturulmalıdır. Eğer bu kurala uyulmazsa Fatal Error denen hatayı verir.

Sözdizimini incelersek biraz daha iyi anlayabiliriz.

<?php
interface ArayuzIsmi{
public function fonksiyon_1($parametre1, $parametre2);
public function fonksiyon_2($parametre1);
}
class sinifIsmi implements ArayuzIsmi {
public function fonksiyon_1($parametre1, $parametre2){
	           $parametre1 = $this -> $parametre1;
           $parametre2 = $this -> $parametre2;
}
public function fonksiyon_2($parametre3){
           $parametre3 = $this -> $parametre3;
}
}
?>

Ek olarak, bir Interface, extend metodu ile başka bir Interface’ye genişletilebilir. Böyle olursa, genişletilen Interface’de yer alan metotlar da zorunlu olarak kullanılmak zorundadır. Aşağıdaki sözdizimini inceleyin…

<?php
interface ArayuzIsmi{
public function fonksiyon_1($parametre1, $parametre2);
}
interface AltArayuzİsmi extend ArayuzIsmi{
public function fonksiyon_2($parametre1);
}
class sinifIsmi implements ArayuzIsmi {
public function fonksiyon_1($parametre1, $parametre2){
	           $parametre1 = $this -> $parametre1;
           $parametre2 = $this -> $parametre2;
}
public function fonksiyon_2($parametre3){
           $parametre3 = $this -> $parametre3;
}
}
?>

Şimdi bir örnekle veritabanına bağlantı kurmaya çalışalım… Yapacağımız örnek biraz karışık gelebilir ilk bakışta, ancak iyice inceleyip bol bol pratik yaptığınızda size çok şey katacaktır.
Örneğimizde, bir interface tarafından türetilen bir Class olacak. Bu Class’ta da iki adet fonksiyonumuz ve parametre değerleri olacak. Bu Class, veritabanına bağlanıp bize sonucu yazdıracaktır. İlk metod, veritabanı bağlantısını kuracak, ikinci metot ise veritabanını seçip bize veritabanındaki değerleri yazdıracaktır. Yani kodların çalışabilmesi için PHPMyAdmin panelinde veritabanı oluşturmalı, bu veritabanı için kullanıcı yetkilendirmeli ve veritabanında da birkaç sütun ile birkaç satır veri girmeniz gerekiyor (MySQL ve PHPMyAdmin ile daha detaylı bilgi almak için diğer bölümleri inceleyebilirsiniz).

İnterface.class.php

<?php
# interface ve kuralları tanımlanıyor.
# kurallara göre iki fonksiyon tanımlanıyor.
# her iki fonksiyonun da parametreleri gönderilmek zorunda.
# bu fonksiyonlar sonraki Class içinde oluşturulmuş.
interface veritabaniBaglantisi{
	public function kullaniciBilgileri($db_kullaniciIsim, $db_sifre);
	public function veritabaniAdi($db_isim);
}

# interface'den türetilmiş Class'ımız..
class baglantiKur implements veritabaniBaglantisi {
# bu ürettiğimiz metot, veritabanı kullanıcı adı ve şifresini alacak
	public function kullaniciBilgileri($db_kullaniciIsim, $db_sifre){
# değişkenler çekiliyor.
		$this -> $db_kullaniciIsim = $db_kullaniciIsim;
		$this -> $db_sifre = $db_sifre;
# global ön eki ile bir değişken tanımlıyoruz.
# global tanımı ile diğer metotlardan da bu değişkene erişebiliriz.
# değişken, veritabanı bağlantısının bilgilerini taşıyacak.
		global $baglanti;
# veritabanına mysql_connect metodu ile bağlanıyoruz.
# localhost tanımı kendi server'i üzerinde olduğunu tanımlıyor.
# veritabanı kullanıcı adını giriyoruz.
# şifreyi giriyoruz.
# bu bilgiler, kodların nereden geldiğini görmek için son satırlara bakın.
# fonksiyonlar nesnelerden çağırılıyor ve argümanları tanımlanıyor.
		$baglanti = mysql_connect('localhost', $db_kullaniciIsim, $db_sifre);
# eğer bağlantı sağlanırsa true sonucunu verir.
# böylece if döngüsü içine girilir.
		if (!$baglanti) {
# eğer false ise, hata mesajı yazdırıyoruz.
			die('Veritabanına bağlanamadı: ' . mysql_error() . '<br>');
		}else{
# eğer girdiyse, girdiğini belirtiyoruz.
			echo "Veritabanına bağlandı!" . PHP_EOL . '<br>';
		}
	}
	
# ikinci metodumuz da veritabanı ismini parametre olarak alıyor.
	public function veritabaniAdi($db_isim){
# önceki metotta oluşturduğumuz veritabanı bağlantısına erişiyoruz.
		global $baglanti;
# metota argüman olarak gelen değişkeni çekiyoruz.
		$this -> $db_isim = $db_isim;
# veritabanında tabloya bağlanıyoruz.
		@mysql_select_db($db_isim);
		
# eğer veritabanı seçildiyse true değeri gelecek.
		$db_secildi = mysql_select_db($db_isim, $baglanti);
# tabloya bağlanma durumunu yine if döngüsü ile yazdırıyoruz.
		if (!$db_secildi) {
			die ('Tabloya bağlanamadı: ' . mysql_error());
		}else {
			echo 'Tablo:' . $db_isim . ' bağlantısı başarılı bir şekilde kuruldu.<br>';
		}

# bir SQL sorgusu oluşturuyoruz
# tablomuzda 3 sütun var. isim, soyisim ve yas.
# bu tablolarda yer alan değerleri çekip yazdıracağız.
		$sql = "SELECT isim,soyisim,yas FROM tablo";
# sorgu ile gelen değerleri bir değişkene aktarıyoruz.
		$sorgu_sonucu = mysql_query( $sql, $baglanti );
# bir while döngüsü ile satırları çekiyoruz.
		while($satir = mysql_fetch_assoc($sorgu_sonucu)){
# her bir satır değerini birleştirerek tek tek yazdırıyoruz.
			echo "<hr>İSİM:{$satir['isim']} <br> ".
				 "SOYİSİM: {$satir['soyisim']} <br> ".
			             "YAŞ: {$satir['yas']} <hr>";
		 } 
# veritabanı bağlantısını kapatıyoruz.
		mysql_close($baglanti);
	}
}

# METOTLAR ÇALIŞTIRILIYOR
# yeni bir baglantiKur nesnesi tanımlanıyor.
$baglantiNesnesi = new baglantiKur;
# metotlara parametre değerleri gönderiliyor.
$baglantiNesnesi->kullaniciBilgileri("ugur", 1234, "ugurgelisken_databaseIsmi");
$baglantiNesnesi->veritabaniAdi("ugurgelisken_databaseIsmi");

?>

Yazdığımız kodları çalıştırdığımızda şöyle bir ekran görüntüsü alırız:

İçeriği paylaş:
  • facebook
  • twitter