PHP OOP Aşırı Yükleme

Nesne içindeki metotların birden fazla kullanımı olarak tanımlanan aşırı yükleme ile ilgili bilgiler yer almaktadır.

PHP OOP Aşırı Yükleme nedir?

OOP ile yazılım geliştirirken aynı isme ve farklı parametre değerlerine sahip metotlar aşırı yüklenmiş metotlar olarak tanımlanır.

Ancak PHP aynı metot/fonksiyon isminde iki metot tanımlanmasına izin vermediğinde bu işlem dolaylı olarak sihirli metotlarla yapılır.

Ayrıca PHP içinde olmayan veya erişilemeyen özellikler içinde aşırı yükleme imkanı verir.

Özellikerin aşırı yüklenmesi __get, __set, __isset ve __unset sihirli metotları ile yapılır.

<?php

class OrnekNesne {

  private $veriler = array();

  public function __set($degiskenAdi, $degiskenDegeri) {
    $this->veriler[$degiskenAdi] = $degiskenDegeri;
  }

  public function __get($degiskenAdi) {
    if (array_key_exists($degiskenAdi, $this->veriler)) {
      return $this->veriler[$degiskenAdi];
    }
    return null;
  }

  public function __isset($degiskenAdi) {
    return isset($this->veriler[$degiskenAdi]);
  }

  public function __unset($degiskenAdi) {
    unset($this->veriler[$degiskenAdi]);
  }

}

$nesne = new OrnekNesne();
$nesne->isim = "Yusuf";     // Olmayan özelliğe değer atandı.
$nesne->soyisim = "SEZER";  // Olmayan özelliğe değer atandı.
echo $nesne->isim;          // Olmayan özelliğe erişildi.
echo $nesne->soyisim;       // Olmayan özelliğe erişildi.

?>

Metotların aşırı yüklenmesi için __call ve __callStatic sihirli metotları ile yapılır.

<?php

class OrnekNesne {

  public function __call($metotAdi, $metotParametreleri) {
    if ($metotAdi == 'adiSoyadi') {
      // Metot Adı adiSoyadi olan metot işlemleri
      if (count($metotParametreleri) === 2) {
        // Metot Adı adiSoyadi ve parametresi 2 olan metot işlemleri
      } else if (count($metotParametreleri) === 3) {
        // Metot Adı adiSoyadi ve parametresi 3 olan metot işlemleri
      }
    }
  }

  public static function __callStatic($metotAdi, $metotParametreleri) {
    if ($metotAdi == 'uyeSayisi') {
      if ($metotParametreleri[0] === 'yonetici') {
        echo "Yöneticileri getir";
      } else {
        echo "Tüm üyeleri getir";
      }
    }
  }

}

$nesne = new OrnekNesne();
$nesne->adiSoyadi("Yusuf", "SEZER");          // Olmayan metot.
$nesne->adiSoyadi("Yusuf", "SEFA", "SEZER");  // Olmayan ve farklı parametreli metot.

OrnekNesne::uyeSayisi();                      // Olmayan static metot.
OrnekNesne::uyeSayisi('yonetici');            // Olmayan ve farklı parametreli static metot.

?>

Metotların aşırı yüklenmesi daha esnek bir yapı için faydalı olacaktır.

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!