Dubluve.net » PHP arayüzü http://www.dubluve.net Biz de yazılımcıyız Sun, 31 Aug 2014 13:17:32 +0000 tr-TR hourly 1 http://wordpress.org/?v=3.9.1 PHP interface http://www.dubluve.net/2012/08/25/php-interface/ http://www.dubluve.net/2012/08/25/php-interface/#comments Sat, 25 Aug 2012 11:08:38 +0000 http://dubluve.net/?p=1763 Merhaba,

Bugün PHP interface yapısından bahsetmek istiyorum. Bilindiği üzere interface Türkçe “arayüz” anlamına gelmektedir. Ancak, burada görsel birşeyler düşünmeyelim. Yapı yani modelleme arayüzü olarak düşünebiliriz. Birden fazla adaptorü olacak bir yapımızın olduğunu düşünelim. Örnek vermek gerekirse, bir veritabanı altyapısı hazırlıyorsunuz ve mysql, oracle gibi birden fazla adaptorünüz var. Bu adaptörlerdeki yapıların birbiri ile aynı olmasını istiyorsak burada interface devreye girecek. Bir projede birden fazla geliştiricinin olması gibi durumlarda standart bir yapının korunmasını sağlamış olacağız. Yapı dışında birşey yapılmak istenirse hata alınacaktır.

Yapıdaki genel kuram bu şekilde. Şimdi kodlarla açıklamaya çalışacağım.

<?php
interface database{
   public function setData($data);
   public function getData($key);
}
?>

Yukarıda ki örnekte “database” isimli bir interface oluşturduk ve bu interface  kullanan tüm class larda “setData” ve “getData” methodlarının olmasının şart olduğunu söylemiş olduk. Burada methodlar süslü parantez açılarak tanımlanmaz. Sadece method ismi yazılır ve kapatılır.

Yine en önemli özelliklerinden biri de methodlara gönderilecek parametreleri dahi burada belirleyebiliyor olmamız. Eğer class içinde eksik parametre tanımlarsak hata vererek bizi bu yapıya uygun kod yazdırmaya zorlayacaktır.

?php
class mysql implements database{
    public function setData($data){
       // ilgili işlemler burada yapılır.
    }
    public function getData($key){
       // ilgili işlemler burada yapılır.
    }
    public function example1(){
       // başka methodlara ihtiyaç duyuyorsak ekleyebiliriz.
    }
}
class oracle implements database{
    public function setData($data){
       // ilgili işlemler burada yapılır.
    }
    public function getData($key){
       // ilgili işlemler burada yapılır.
    }
    public function example2(){
       // başka methodlara ihtiyaç duyuyorsak ekleyebiliriz.
    }
}
?>

Yukarıda ki örnekte oluşturduğum mysql ve oracle classlarının interface olarak “database” arayüzünü kullanmasını sağladım. Hata almamak için interface içinde belirtilen methodları tanımladım ve tüm sınıflarım standart bir yapıya kavuşmuş oldu. Yine örnekte görüldüğü üzere, interface kullanmak için “implements” yazdıktan sonra interface adını yazmamız gerekiyor.

Umarım faydalı olmuştur. Geliştirerek kendi projelerinizde de kullanabilirsiniz.

]]>
http://www.dubluve.net/2012/08/25/php-interface/feed/ 6