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 :
Yazar Hakkında
Kendi Halinde Bir Backend Developer