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.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!