Php Dersleri
2026 Güncel

Php OOP Dersleri – Overriding ve Overloading

4 dk okuma süresi 599 görüntülenme 28.09.2023 4.9 (18 değerlendirme)

Merhaba arkadaşlar phphocasi.com.tr için hazırladığımız php derslerimizde bu ders Overriding ve Overloading  işlemlerine bakacağız. Nesne yönelimli kodlama yaparken bu iki işlem işimizi kolaylaştırmaktadır. Türkçe anlamı ile ezmek ve aşırı yüklemek anlamlarına gelen bu iki yöntemi inceleyelim.

Override İşlemi

Override yani ezme işlemi genellikle base classta var olan bir methodun türetilen methodda tekrardan oluşturulmasıdır. Yani örnek verecek olursak:

<?php class kare { protected $width public function __construct($w) { $this->width = $w } public function getWidth() { return $this->width } public function setWidth($w) { $this->width = $w } public function alanHesapla() { return pow($this->width,2) } } class kup extends kare { public function __construct($w) { parent::__construct($w) } // override Methodumuz public function alanHesapla() { return parent::alanHesapla()*6 } } // normal sınıfımızdan nesnemizi çağırdık. $kare = new kare(5) echo "Oluşturulan karenin Alanı: ".$kare->alanHesapla()."br <sup>2</sup>dir. <br/>" $kup = new kup(5) echo " Oluşturulan Küpün Alanı: ".$kup->alanHesapla()."br <sup>2</sup>dir. <br/>" 

Yukarıdaki kodda işaretli satırlara bakarsak alanHesapla() methodu baseClass ta olmasına rağmen kalıttığımız sınıfta da aynı isimde method oluşturup küpün alanını bulduk. Buradaki asıl mantık baseClasstaki alanHesapla() methodu işimizi görmediği için küpün alanını hesaplamak için yeni bir alanHesapla methodu oluşturarak üst sınıftaki methodu ezmektir.

Peki neden farklı bir isimde method oluşturmayıp üst sınıfın methodunu ezdik?

Şuan sadece iki class olduğu için methodları aklımızda tutabiliriz. Kare, küp, dikdörtgen gibi birsürü geometrik şekilleri bir baseClassta toplayıp hepsini ayrı ayrı kareAlani(), kupAlani()…. gibi farklı methodlar oluşturmamız bizim kafamızı bir hayli karıştırırdı. Bu yüzden override işlemi yaparak tek methodda istediğimiz geometrik şeklin çevresini hesapladık.

 

Overload İşlemi

Overload (Aşırı yükleme) işlemi ise bir methodun farklı parametreler ile birden fazla tanımlanmasıdır. Çağırırken ise kaç parametre ile çağırırsak çağırılan parametreye uygun methodumuz çağırılır.

Bir methodun aşırı yüklenebilmesi için dönüş tipinin aynı olması gerekmektedir.

Php de overloadin işlemi yapılması direk olarak mümkün değil ama overloading işlemini yapmamızı sağlayan iki adet fonksiyonumuz mevcut. Bu fonksiyonlar:

 

func_num_args() // fonksiyon çağırılırken parametre sayısını geri döndürür.

Örneğin: myFunc(1,2,3,4) // 4 değerini döndürür

func_get_arg($i)  //  indisine göre parametreleri almamızı sağlar.

Bu iki fonksiyon ile overloading işlemi yapalım.

function yazdir() { for($i=0$i<func_num_args()$i++) { echo func_get_arg($i)." " } echo "<hr/>" } yazdir("Vehbi") yazdir("Vehbi", "Akdoğan") yazdir("Vehbi", "Akdoğan","Erzurum")

 

şeklinde çıktı alabiliriz.

Bu işlemi fonksiyon kullanmadan parametreleri dizi olarak göndererekte yapabiliriz ama parametre sabit 1 tane olduğu içintam anlamıyla  overloading işlemi olarak tanımlayamayız. Örneğin:

 

function yazdir($param) { foreach($param as $val) { echo "$val " } echo "<hr/>" } yazdir(["Vehbi"]) yazdir(["Vehbi", "Akdoğan"]) yazdir(["Vehbi", "Akdoğan","Erzurum"])

 

Bir dersimizin daha sonuna geldik. Bir sonraki dersimizde görüşmek üzere ?

 

Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.

Tüm php dersleri için tıklayınız..

 

 

 

1
Makaleyi Değerlendirin

Bu makale işinize yaradı mı? Puan verin!

Okuyucu puanları makalelerimizin arama motorlarında öne çıkmasına ve güncellenmesine destek olur.

4.9 / 5 (Toplam 18 oy kullanıldı)

Sıkça Sorulan Sorular (SSS)

Bu makale ve teknik konuyla ilgili detaylar

Php OOP Dersleri &#8211; Overriding ve Overloading makalesindeki yöntemler hangi sürümlerde geçerlidir?

İçerikteki çözümler ve kod örnekleri güncel PHP 8.x ve modern web standartları referans alınarak test edilmiştir.

Bu konuda başka makalelere nereden ulaşabilirim?

Sayfanın sağ tarafındaki Kategori Menüsü ve ilgili yazılar alanından benzer teknik rehberleri inceleyebilirsiniz.