PHP Dersleri #37 – OOP, Kalıtım (Nesne Arayüzleri, Interface)


Herkese merhaba arkadaşlar, kodportali.com PHP derslerine kaldığı yerden tüm hızıyla Nesne Arayüzleri (Interface) ile devam ediyoruz.

PHP ‘de Nesne Arayüzleri

Nesne arayüzleri bir sınıfta olması zorunlu olan fonksiyonları bu yöntemin nasıl gerçekleşeceğini yazmadan nitelememize sağlar. Sınıfları oluştururken ‘class‘ anahtar kelimesini kullanıyorduk, nesne arayüzü oluştururken ise ‘interface‘ anahtar kelimesini kullanacağız. Bir sınıfa arayüz belirtmek için ‘implements‘ anahtar kelimesi kullanılır. Kullanım şekli ‘class SınıfAdı implements ArayüzAdı‘ şeklindedir. Belirttiğimiz sınıfın arayüzündeki tüm fonksiyonlar sınıfımızdada olmak zorundadır. Biz buna override diyoruz. Yani türemiş sınıf, kendisinden türediği sınıftan özellik ve metodları miras almaktadır. Unutmayın arayüz içine koyduğunuz fonksiyonlar sadece ‘public‘ değerine sahip olabilir diğer görünürlüklere arayüz içinde herhangi bir işlem yapılmayacağından izin verilmez.

 

İlk Nesne Arayüzümü Oluşturalım

PHP ‘deki İlk Basit Arayüzümüz

Yukarıdaki örneğimizde ‘A’ adında bir nesne arayüzü oluşturduk ve hemen altında ‘B‘ adında bir sınıf oluşturup ‘A‘ arayüzünü ‘B‘ sınıfına implement ettik. Yani ‘B‘ sınıfını ‘A‘ nesne arayüzü ile kalıtmış olduk. Şunu unutmayın interface içine yazdığınız tüm fonksiyonlar o sınıf içinde parametre, return types ve görünürlük özelliklerinin birebir aynısı şekilde yazılması gerekir. Eğer eksik veya değiştirilmiş şekilde yazarsanız PHP size hata döndürecektir. Dikkat ettiyseniz interface içine yazdığımız fonksiyon’un sonuna ‘;‘ koyduk süslü parantezler koymadık. Bunun sebebi nesne arayüzünde işlem yapılmaz sadece gösterilir. Kodumuzu çalıştırdığımız zaman ekranda ‘Hello World‘ yazıcaktır.


Bir Sınıfa Çok Sayıda Arayüz Atamak

Bu sefer ‘A‘ ve ‘B‘ adında 2 arayüz oluşturduk. İki arayürüzüde aralarına nokta koyarak ‘C‘ sınıfına kalıttık. Unutmayın bunun bir sınırı yoktur, istediğiniz kadar kalıtabilirsiniz. Ardından yine aynı mantık iki arayüzdede bulunan tüm fonksiyonları aynı niteliklere sahip şekilde ‘C‘ sınıfına yazdık. (Eğer PHPStorm kullanıyorsanız kendisi otomatik yapıcaktır bu işlemi). Daha sonra altta ‘C‘ sınıfını yeniden oluşturduk ve sınıfın içinde bağımsız oluşturduğumuz ‘write()‘ fonksiyonunu çağırdık. Kodumuz çalıştığı zaman ekranda ‘ab‘ yazıcaktır.


Genişletilebilir Arayüz

Bir arayüzü genişletebilirsiniz. Bunun için ise ‘extends‘ anahtar kelimesini kullanacağız. Arayüzü genişlettiğimiz interface ‘deki tüm özellikler en son kalıttığımız sınıf içinde geçerli olucaktır.

Burada yukarıdaki örnekten farklı olarak ‘C‘ sınıfını sadece ‘A‘ arayüzü ile kalıttık fakat ‘B‘ arayüzündeki özellikler bu sefer bu sınıfa da geçti bunun sebebi ‘A‘ arayüzünü, ‘B‘ arayüzü ile genişlettiğimiz için. Dikkat edin genişlettiğimiz sınıfın içine yazmadık override edilecek fonksiyonu yine en son kalıttığımız sınıfın içine yazdık. Burada unutmamanız gereken önemli noktalar şunlardır ‘class C extends B implements A‘ yapamazsınız, arayüzleri ‘extends‘ kelimesi ile kalıtamazsınız bu konuda bu sözcüğü sadece bir arayüzü genişletmek için kullanabilirsiniz. ‘class C extends implements A, B‘ yapamazsınız çünkü ‘A‘ arayüzü zaten ‘B‘ ile genişletildiği için PHP yine hata vericektir.


PHP ‘de Arayüz Sabitleri

Daha önceki derslerimizde gördüğümüz ‘const‘ ifadesini hatırlamış olmanız gerekir. const ifadeside yine görünürlük ifadeleri ile sınıf içerisinde kullanılabilir, eğer yukarıdaki gibi görünürlük belirtilmezse otomatik olarak ‘public‘ olur. Burada gördüğünüz gibi arayüz içine bir sabit koyduk. Daha sonra ‘A::B‘ şeklinde çağırdık, ‘::‘ bunun gibi işlemler için kullanılır. Genişlettiğimiz sınıf içinde, kullandığımız arayüzün sabitini kullanmaya çalıştık. Fakat sabitler geçersiz kılınamıyacağı için çalışmayacaktır. Bir arayüzden sabit çekmek için ‘ArayüzAdı::SabitAdı‘ şeklinde kullanırız.

 

Evet bu dersimizin de burada sonuna geldik. Herhangi bir sorunuz olursa yorumlarda sorabilirsiniz.

Sitemizdeki tüm PHP dersleri için buraya tıklayabilirsiniz.

[Toplam:0    Ortalama:0/5]

Sizin Tepkiniz Nedir?

süper süper
1
süper
bilgilendirici bilgilendirici
0
bilgilendirici
beğenmedim beğenmedim
0
beğenmedim
beğendim beğendim
0
beğendim
Düşündürücü Düşündürücü
0
Düşündürücü
Anıl Mısırlıoğlu
Yazılım Mühendisi

0 Yorum

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bir format seçin
Kişisel Test
Kişiliğe dair bir şey ortaya çıkarmayı amaçlayan sorular dizisi
Basit Test
Bilgiyi kontrol etmek isteyen doğru ve yanlış cevaplı sorular dizisi
Anket
Karar vermek veya görüş belirlemek için oylama yapmak
Serbest Yazı
Yazılarınıza Görseller Bağlantılar Ekleyebilirsiniz
Liste
Klasik İnternet Listeleri
Geri Sayım Listesi
Klasik İnternet Geri Sayım Listeleri
Açık Liste
Kendi öğenizi gönderin ve en iyi sunum için oy verin
Oylanabilir Liste
En iyi liste öğesine karar vermek için yukarı veya aşağı basın
Fotoyla Anlatım
Kendi resimlerinizi yükleyin ve birşeyler anlatın
Video
Youtube, Vimeo veya Vine Kodları
Ses
Soundcloud veya Mixcloud İçerikleri
Görsel
Fotoğraf veya GIF
GIF
GIF Formatı