private erişim belirleyicisi ( gizli )

Daha önce sınıflarda erişim belirleyicileri yazımda 3 adet erişim belirleyicisi olduğunu söylemiş ve public erişim belirleyicisini anlatmıştık. Bu yazımızda ise private erişim belirleyicisini anlatacağım.

private erişim belirleyicisi kullanılan metod yada özellik

  • sadece sınıf içinden erişilebilir,
  • sınıf dışından erişilemez,
  • ve türetilen sınıflardan erişilemez.

olmaktadır.

Adı üstünde gizli, yani bu özelliği sadece sınıfın kendisi bilir ve kullanır. Ne dışarıdan ne de bu sınıftan miras alan sınıflardan bu değere doğrudan ulaşılamaz.

bu özellikteki metod yada özelliğe sınıf dışından, türetilen (miras alınan) sınıftan erişebilmek için başka bir public metod kullanılmalıdır.

class Kase{
// Kaşe sınıfı
private $isim = "Mustafa YILMAZ"; // Kase sınıfına ait $isim özelliği ( private görünürlüğüne sahip)
public function yaz(){
echo $this->isim ."<br>";
}
}
$ornek = new Kase();
// $ornek->isim="Canan Can"; // bu satır hata verir. $ornek->isim private (gizli) özelliğine sahip
$ornek->yaz();

kodların açıklamasını yapacak olursak,

Kase sınıfı içinde $isim özelliğini private olarak tanımladık. Bu özelliği ekrana yazan yaz() metodunu ise public olarak tanımladık.

$ornek->isim diyerek değeri değiştirmeye çalıştığımız satırı yorum satırı yaptım çünkü bu satır çalıştığında php "Cannot access private property Kase::$isim" hatası verir.

yaz() metodu ise sınıfın içinde olduğu için private olan $isim özelliğine $this ile rahatlıkla ulaşabildi ve ekrana Mustafa YILMAZ yazdı.

public metoda heryerden (sınıf içinden, sınıf dışından, türetilen sınıftan) erişilebilir. İşte bu yüzden private bir değere ulaşmak istediğimizde araya public bir metod koyuyoruz.

private ne zaman kullanılır?

Şimdi bir senaryo düşünelim. Bir banka hesabı sınıfı yazdınız ve içinde $bakiye özelliği var. Bu özellik public olsa herhangi biri dışarıdan $hesap->bakiye = 1000000; yazıp bakiyeyi değiştirebilir. Bunu istemeyiz değil mi? İşte bu gibi dışarıdan kontrolsüz değiştirilmemesi gereken bilgileri private yapıyoruz. Para yatırma ve çekme işlemlerini de içinde gerekli kontrolleri yaptığımız public metodlar ile yapıyoruz.

Private olan bir değeri dışarıdan nasıl değiştireceğimizi private olan metoda sınıf dışından erişim yazımda örnekleri ile anlattım. Türetilen sınıflardan erişilebilen bir yapı istiyorsanız da protected yazıma göz atabilirsiniz.