PHP Class üzerinde Interface İşlemi

PHP Class üzerinde Interface İşlemi

Hepinize merhaba dostlarım :). Bu yazımda sizlere PHP programlama dilinde OOP işlemlerinde karşımıza sık sık çıkan bir işlem olan Interface den bahsedeceğim. Çok zor bir şey değil ama bilinmesinde fayda var mıdır diye sorarsanız evet derim :). Çünkü bazı durumlarda bize oldukça yarayacaktır. Öğrenmek için heyecanlandığınızı anlıyorum dostlarım :). O halde sözü uzatmadan ufak bir mantıksal tanımlamaya geçelim diyorum

Interface Nedir ?

Dostlarım interface az çok ingilizce biliyorsanız arayüz demektir. Tamam açıklaması doğru arayüz ama progrmlama dilinde arayüz mü olur derseniz evet derim :). Aynı ASP.NET de olduğu gibi PHP de de vardır dostlarım. Buradaki amaç ise tamamen şudur

Bir class oluşturduk diyelim dostlarım. Bu classta kullanılması zorunlu olan methodlar tanımlayacağımız durumlar var. Örnek vermek gerekirse veri tabanı bağlantısı yapcaz diyelim veya üyelik için yaş değerini almamız gerektiği durum olduğunda bunu yazmamız mecburi olacaktır dostlarım :). Aklıma gelen ve sizlere örnek olması açısından verebileceğim örneklerdir bunlardır şu anlık dostlarım :). 

Heyecanlandığınızı açık açık görüyorum dostlarım :). Sözü daha fazla uzatmayacağım dostlarım :). Hemen örneklere geçiyorum

Dostlarım ilk örneğimizde Arda isminde bir yazılım merakı olan bir dostumuz olsun ve ehliyet almak için yaşını mecburi tutalım. Eğer yaşı 18 ve üzeri ise ehliyet alabilsin, değilse ehliyet alamasın. Bunu normalde yapmıştık ama şimdi gelin interface kullanarak yapmayı deneyelim

// INTERFACE TANIMLADIK
interface Yas{
    public function yas_gir($yas=0);  // İÇERİSİNE YAŞ ALMA FONKSİYONU YAZDIK
}

// CLASS TANIMLADIK
class Arda implements Yas{

}

bu şekilde bir interface oluşturduk ve Arda class ına interface mizi implement ettik. Ama class içerisinde çağırmazsak karşımızda altını çiziyor


resimdeki gibi altını çiziyor dostlarım. Sebebi ise yas_gir fonksiyonunu biz arayüz tanımlayıp Arda class ında zorunlu olarak tanımlanması gerektiğini söyledik. Eğer bu halde kodu çalıştırırsak şu hata ekrana gelecektir

Class Arda contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Yas::yas_gir)

şeklinde hatamızı alıyoruz :). Biz methodumuzu tanımlayalım ve işlemimizi yapalım dostlarım

<?php

// INTERFACE TABIMLADIK
interface Yas{
    public function yas_gir($yas=0);  // İÇERİSİNE YAŞ ALMA FONKSİYONU YAZDIK
}

// CLASS TANIMLADIK
class Arda implements Yas{
    // GEREKLİ FONKSİYONUMUZU YAZALIM
  public function yas_gir($yas = 0)
  {
      if($yas>=18){  
            // YAS 18 VE ÜZERİ İSE BURASI ÇALIŞACAK
          echo "Ehliyet Alabilir";
      }else{
           // YAS 18 ALTINDA İSE BURASI ÇALIŞACAK
          echo "Ehliyet Alamaz";
      }
  }
}


$arda = new Arda();  // NESNE OLUŞTURDUK
$arda->yas_gir(14);  // NESNE DEN METHODA İLERLEDİK

/*
    EKRAN ÇIKTISI : Ehliyet Alamaz
*/

kodları yazdık dostlarım. Ve ekran çıktısında da olduğu gibi Arda 14 yaşında olduğundan ehliyet alması şu an uygun değil. Yaşı 18 ve üzeri olduğunda ehliyetini alıp lüks bir araç kullanması dileklerimizle...

Şimdi gelin dostlarım diğer bir interface örneğimizi yapalım

Burada ise veri tabanı bağlantı işlemi için host,user,password,database bilgilerini alıp veri tabanına bağlantı işlemini gerçekleştirelim. Önceden core php de bunu direk yazıyorduk şimdi ise oop üzerinde zorunlu parametre gibi alıp yolumuza devam edelim dostlarım :)

<?php

// INTERFACE TANIMLADIK
interface db_Info{
    public function user_info($username="",$pass="");  // KULLANICI BİLGİLERİ İÇİN ZORUNLU METHOD
    public function db_info($host="",$dbname="");  // DATABASE BİLGİLERİ İÇİN ZORUNLU METHOD
}

// BAĞLANMA CLASS I TANIMLAYALIM
class Baglan implements db_Info{
    
    public $host = "";  // HOST DEĞİŞKENİ
    public $db = "";  // DB DEĞİŞKENİ
    public $user = ""; // USER DEĞİŞKKENİ
    public $pass = "";  // PASSWORD DEĞİŞKENİ

    // DB BİLGİLERİNİ BU METHODDAN ALACAĞIZ
    public function db_info($host = "", $dbname = "")
    {
        $this->host=$host;  // HOST BİLGİSİNİ AKTARDIK
        $this->db = $dbname;  // DB NAME BİLGİSİNİ AKTARDIK
    }

    // USER BİLGİLERİNİ BU METHODDAN ALACAĞIZ
    public function user_info($username = "", $pass = "")
    {
        $this->user = $username;  // KULLANICI ADINI ALDIK
        $this->pass = $pass;  // KULLANICI PASSWORD UNU ALDIK
    }

    // BAĞLANTI METHODUMUZ
    public function baglan(){
        try {
            $db = new PDO("mysql:host=$this->host; dbname=$this->db; charset=utf8;",$this->user,$this->pass);
            echo "Bağlantı Başarılı";
        }catch (PDOException $e){
            echo $e->getMessage();
        }
    }
}

$db = new Baglan();  // NESNE OLUŞTURDUK
$db->db_info("localhost","test"); // LOCLHOST ÜZERİNDEN TEST VERİ TABANINA BAĞLAN DEDİK
$db->user_info("root",""); // KULLANICI BİLGİLERİNİ GİRDİK
$db->baglan(); // BAĞLANMAYA BAŞLA DEDİK

şekildeki gibi kodu yazdık diyelim dostlarım :). Veri tabanına bağlandığında aşağıdaki gibi yazı çıkacaktır :)

Bağlantı Başarılı

Eğer başarısız olursa dostlarım bunun birden fazla sonucu olabilir

  • Kullanıcı bilgileri yanlıştır
  • Kullanıcı yoktur
  • Veri tabanı yoktur

Evet dostlarım :). OOP üzerinde Interface işlemini elimden geldiğince anlatmaya çalıştım. Başlarda karmaşık gelebilir diğer yazılarımda dediğim gibi istikrarlı olduğunuz sürece ve bol pratik yaptığınız takdirde başarı kaçınılmazdır :). Umarım faydalı olabilmişimdir :)

Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki YazıGitHub (GIT) Nedir?
Sonraki YazıVeri Tabanı ve Tablo Nedir
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz