PHP OOP interface
OOP ile yazılım geliştirirken nesneye uygulanacak metotların tanımlandığı ve birden fazla kalıtım almaya imkan veren arayüzler veya interface ile ilgili bilgiler yer almaktadır.
PHP OOP interface nedir?
OOP içerisinde bulunan interface yani arayüzler sadece sınıfta zorunlu olarak tanımlanması gereken metotları belirtmek için kullanılır.
Arayüzler, soyut sınıflara benzer.
Arayüz tanımlamak için interface anahtar kelimesi kullanılır.
<?php
interface Insan {
}
?>
Arayüzler new anahtar kelimesiyle nesne haline getirilemez / örneklenemez.
<?php
interface Insan {
}
$ben = new Insan (); // hata verir.
?>
Arayüz içindeki tüm metotların erişim belirleyicisi public olmak zorundadır.
Metoda herhangi bir erişim belirleyici verilmediğinde varsayılan olarak public değerini alacaktır.
<?php
interface Insan {
public function AdiSoyadi();
function Yasi(); // public değerini alır.
}
?>
Arayüz içinde özellikler bulunmaz ancak bir istisna olarak sabit / const tanımı yapılabilir.
<?php
interface Insan {
const KALP = true; // her insanda kalp vardır :)
public function AdiSoyadi();
function Yasi();
}
?>
Kurucular ve yıkıcılarda bir metot olduğundan arayüz içinde tanımlanabilir.
<?php
interface Insan {
const KALP = true; // her insanda kalp vardır :)
public function __construct();
public function AdiSoyadi();
function Yasi();
public function __destruct();
}
?>
Arayüzler extends ile başka bir arayüz tarafından kalıtım alınabilir.
PHP’de arayüzler diğer OOP destekleyen dillerden farklı olarak static metotlara sahip olabilir.
<?php
interface Insan {
const KALP = true;
public function AdiSoyadi();
function Yasi();
}
interface Ogrenci extends Insan {
static function OgrenciNumarasi(); // static metot
function Bolum();
}
?>
Arayüz içindeki metotları sınıflara uygulamak için implements anahtar kelimesi kullanılır.
Arayüzün uygulandığı sınıf içindeki metotlar public olmak zorundadır.
<?php
interface Insan {
const KALP = true;
public function AdiSoyadi();
function Yasi();
}
interface Ogrenci extends Insan {
static function OgrenciNumarasi(); // static metot
function Bolum();
}
class UniversiteOgrencisi implements Ogrenci {
public function AdiSoyadi() { }
public function Yasi() { }
public static function Bolum() { }
public static function OgrenciNumarasi() { }
}
?>
Soyut sınıflar arayüzleri implements anahtar kelimesiyle kalıtım alabilir.
<?php
interface Insan {
const KALP = true;
public function AdiSoyadi();
function Yasi();
}
interface Ogrenci extends Insan {
static function OgrenciNumarasi();
function Bolum();
}
abstract class UniversiteOgrencisi implements Ogrenci {
public function AdiSoyadi() { }
public function Yasi() { }
public static function Bolum() { }
public static function OgrenciNumarasi() { }
abstract function NotHesapla(); // abstract metot.
}
?>
Birden fazla arayüz virgül ile ayrılarak sınıf tarafından kullanılabilir.
<?php
interface Insan {
const KALP = true;
public function AdiSoyadi();
function Yasi();
}
interface Ogrenci {
static function OgrenciNumarasi();
function Bolum();
}
class UniversiteOgrencisi implements Insan, Ogrenci { // iki arayüz kullanıldı
public function AdiSoyadi() { }
public function Yasi() { }
public static function Bolum() { }
public static function OgrenciNumarasi() { }
}
?>
PHP içinde aşırı yükleme / overloading tam desteklenmediğinden aynı metoda sahip arayüzlerin bir sınıf tarafından kullanılması belirsizliğe yol açabilir.
PHP OOP Derslerine buradan ulaşabilirsiniz…
Hayırlı günler dilerim.