erişim belirleyiciler
KategorilerPhp

Erişim Belirleyiciler: Public & Private

Bu derste neler öğreneceğiz ?

  • Public(genel) erişim belirleyicisi nasıl kullanılır ?
  • Private(Özel) erişim belirleyicisi nasıl kullanılır ?
  • Private(Özel) özelliklere nasıl erişilir ?
  • Neden erişim belirleyicilerine ihtiyacımız vardır ?

Daha önceki yazılarımda, sınıflarımızdaki metot ve özelliklerin önünde herhangi bir açıklama yapmadan public erişim belirleyicisini kullandık. Genel erişim belirleyicisi, kullandığımız birkaç belirleyiciden yalnızca biridir. Bu eğitimde, özel erişim belirleyicisi adı verilen başka bir belirleyici hakkında bilgi edineceğiz.

Public erişim belirleyicisi, sınıfın dışından veya içinden bir kodun sınıfın yöntemlerine ve özelliklerine erişmesine izin verirken, private belirleyici, sınıfın dışındaki herhangi bir koddan bir sınıfın yöntemlerine veya özelliklerine erişimi engeller.

Public erişim belirleyicisi

Aşağıdaki örnek size zaten aşina olmalıdır. Örnekte, sınıfın özelliği ve yöntemi public olarak tanımlanmıştır , böylece sınıfın dışındaki kod bunlarla doğrudan etkileşime girebilir.

<?php
 
class Car {
 
  public $model;    
 
  public function getModel()
  {
    return "Araba modeli " . $this->model;
  }

}
 
$mercedes = new Car();

$mercedes->model = "Mercedes";

echo $mercedes->getModel();
SONUÇ

Araba modeli Mercedes'tir.

Private erişim belirleyicisi

Public erişim belirleyicisi yerine private erişim belirleyicisini ile tanımlarsak, sınıflarımızdaki özelliklere ve yöntemlere erişimi engelleyebiliriz.

Aşağıdaki örnekte $model özelliğini private olarak tanımlıyoruz ve onun değerini sınıf dışından ayarlamaya çalıştığımızda ölümcül bir hata ile karşılaşıyoruz.

<?php
 
class Car {
 
  //Private Özellik

  private $model;
    
  public function getModel()
  {
    return "Araba modeli " . $this->model;
  }

}
 
$mercedes = new Car();
 
$mercedes->model = "Mercedes Benz";

echo $mercedes->getModel();
 
?>
SONUÇ

Private özelliklere nasıl erişilir ?

Sınıf dışından özel özelliklere erişimimiz olmadığını gördük, ancak yine de özelliklerin değerlerini bir şekilde ayarlayıp almamız gerekiyor. Özel özelliklerle etkileşimde bulunmak için genel metotlar kullanırız çünkü bunlar hem sınıfın kapsamı dışındaki kodla hem de sınıf içindeki kodla etkileşime girebilir. Bu şekilde etkileşime girebilen genel metotlar genellikle iki tür yönteme ayrılır:

1.Private özelliklere değer vermek için kullandığımız yöntem.

2.Private özelliklerin değerlerini almak için kullandığımız yöntem.

Aşağıdaki örnekte, değer verme ve değer alma yöntemlerini kullanarak $model adlı private bir özelliğin değerini alıp ayarlayabileceğimizi göreceğiz. Araba modelinin değerini ayarlamak için setModel( ) metodunu ve özelliğin değerini almak için getModel() metodunu kullanacağız.

<?php
 
class Car {
 
  private $model;
 
  public function deger_ver($model)
  {
    $this->model = $model;
  }
  
  public function deger_al()
  {
    return "Araba modeli " . $this->model;
  }

}
 
$mercedes = new Car();

// Değer verme metodumuz
$mercedes->deger_ver("Mercedes benz");

// Değer alma metodumuz
echo $mercedes->deger_al();
 
?>
SONUÇ

Araba modeli Mercedes benz

Neden erişim belirleyicilere ihtiyacımız var?

Sınıfların dışından gelen kodların sınıfların metot ve özelliklerinde yapabileceği değişiklikleri sınırlamak için erişim belirleyicilere ihtiyacımız var. Bir özelliği veya metodu private olarak tanımladığımızda , yalnızca sınıf içindeki yöntemlerin ona erişmesine izin verilir. Bu nedenle, özel metotlar ve özelliklerle etkileşim kurmak için public metotlar ile işlem sağlamamız gerekir. Bu metotların içine sınıf dışından gelen verileri doğrulayabilen ve kısıtlayabilen işlemleri koyabiliriz.

Örneğimizde, public setModel() metodunda modeller için izin verilen alternatifleri tanımlayarak yalnızca belirli araba modellerinin yoluna girebileceğini ve private $model özelliğine atanabileceğini doğrulayabiliriz. Bu amaçla, setModel() yönteminde izin verilen araba modelleri dizisini tanımlarız ve $model özelliğine yalnızca bu modellerin atandığını kontrol ederiz .

<?php
 
class Car {
 
  private $model;
 
  public function deger_ver($model)
  {
    // Değer vermek için izin verilen modeller
    $izin_verilen_modeller = array("Mercedes Benz","BMW","Audi");
 
    // in_array() = girilen değerin, izin verilen değerler arasında olup olmadığını kontrol eder
    if(in_array($model,$izin_verilen_modeller))
    {
      $this->model = $model;
    }
    else
    {
      $this->model = "Yazdığınız model izin verilenler listemizde bulunmuyor!";
    }
  }
  
  public function deger_al()
  {
    return "Araba modeli" . $this->model;
  }
}
 
 
$mercedes = new Car();

$mercedes->deger_ver("Mercedes Benz");

echo $mercedes->deger_al();
 
?>
SONUÇ

Araba modeli Mercedes Benz.

Eğer deger_ver() metodumuzda girilen değer izin verilen degerler arasında bulunmasaydı :

SONUÇ

Yazdığınız model izin verilenler listemizde bulunmuyor!

Takıldığınız bir yer olursa yorum yapmaktan veya WhatsApp grubumuzdan yazmaktan çekinmeyin. Sorunuz yanıtsız kalmayacaktır. Kendinize iyi bakın. Bir sonraki yazıda görüşmek dileğiyle. Allah’a emanet olun.

mstfkrtll whatsapp-button
https://chat.whatsapp.com/Jul6h8jsXkpKqke2d7N17b

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.