PHP Class üzerinde Erişim Methodları

PHP Class üzerinde Erişim Methodları

Hepinize merhaba dostlarım :). Bu yazımızda da başlıktan anlaşılacağı gibi erişim methodlarından bahsedeceğiz. Bunlardan 1 tanesini önceki class örneklerimizde sıklıkla kullandık dostlarım :). Okumayan dostlarım için link bırakayım

PHP Class ve Nesne Kavramı: https://blog.mfsoftware.net/yazi/php-de-class-ve-nesne-kavrami
PHP Class Üzerinde Parametreli Fonksiyonlar: https://blog.mfsoftware.net/yazi/php-class-uzerinde-parametreli-fonksiyonlar
PHP Class Üzerinde Yapıcı ve Yıkıcı Methodlar: https://blog.mfsoftware.net/yazi/php-class-uzerinde-yapici-ve-yikici-methodlar

linklerinden ulaşabiliriniz dostlarım. Gelelim şimdi erişim methodları nedir onu bir açıklayalım

Erişim Methodları Nelerdir ?

Dostlarım mantıken anlatmak istersek bir class ımız var diyelim. Bu class altından ek class lar oluşturduk (ileriki yazılarımızda göreceğiz bunu buraya not alın :)) diyelim. Bu değişkenkere erişim veriyoruz yani bir yetki gibi düşünebilirsiniz. Bunu her yere de açabiliriz o class a ait de tutabiliriz bunu gerektiği zamanlarda yapmamız lazımdır :). Şimdi gelelim bu erişim methodları nelerdir 

  • private: Dostlarım private ile tanımlanmış değişken ve fonksiyonlara sadece ve sadece o class içerisinden erişilebilir. Diğer yerlerde erişim için kullanmaya çalışırsak hata mesajı karşılar. Ki zaten de genellikle public methodunu kullandığımız için bu methoda pek bakmayız :).


  • public: Public erişim methodumuz private methoduna göre çok gelişmiş ve her yerden erişilebilen bir methoddur. Önceki örneklerimizde görmüşsünüzdür fonksiyonların hepsini public ile tanımladık ve hiçbir engel omaksızın rahatlıkla kullandık sağda solda :). Bunu gönül rahatlığı ile kullanabilirsiniz dostlarım erişimi açıktır her yere :). Ama dikkatli olmanızda da fayda var :).


  • protected: Protected erişim methodu ise dostlarım private ye göre gelişmiş, public e göre gelişmemiş bir erişim methodudur. Private ye göre gelişmiş yönü bağlı olduğu class ın içinde çağrıldığı gibi o class tan türettiğimiz alt class larda da rahatlıkla çalışabilmesidir dostlarım :). Public e göre eksik yanı ise bağlı olduğu class lar dışında hiçbir yerde çağıramıyoruz :) bize hata veriyor dostum yetkin yok diye :) tıpkı private erişim methodunda olduğu gibi. Bunu da örneklerle göreceğiz

Erişim methodlarını öğrendiğimize göre dostlarım gelin bunların her biri ile örnek yapalım :)


1-) Private 

Dostlarım açıklamada da anlattığım gibi buna sadece bu class içerisinden kullanılır :). Dışarıdan kullanılmaz. Örneğin Zafer isminde bir class oluşturalım ve private olarak yaş değişkeni oluşturalım ve construct yani yapıcı methodumuzdan buna 26 değerini set edelim. Bunu da class dışından çağırmayı deneyelim

<?php

class Zafer{
  private $yas;  // private olarak yaş tanımladık
  
  public function __construct(){
     $this->yas=26;  // yaş değişkenine 26 yazdık
  }
}


$zafer = new Zafer();  // nesne oluşturduk
$zafer->yas;  // private değişkene erişmeye çalıştık

?>

bu kodu yazdık dostlarım :). Ama çalışmayacak :). Cevabı bildiniz çünkü private method :). Aklınıza şu soruu gelmiştir

Çalıştırsak ekrana nasıl bir hata gelir acaba ?

sizi mi kırcam dostlarım hadi gelin çalıştıralım

Fatal error: Uncaught Error: Cannot access private property Zafer::$yas

işte bu hata karşılayacaktır dostlarım :). Yani bize diyor ki dostum sen burada yas değişkeni oluşturmuşsun ama buna private demişsin erişemezsin diyor :). Biz erişebilir miyiz diye merak ediyorsanız bir yolu var :). Ek bir method açıp onu çağırabiliriz :). Gelin hadi onu yapalım isterseniz

<?php

class Zafer{
  private $yas;  // private olarak yaş tanımladık
  
  public function __construct(){
     $this->yas=26;  // yaş değişkenine 26 yazdık
  }
  
  public function yas_getir(){
    echo "Zafer Hocanın Yaşı: ".$this->yas;
  }
}


$zafer = new Zafer();  // nesne oluşturduk
$zafer->yas_getir();  // yas_getir methoduna eriştik

?>

olarak yazalım. Ve ekrana o güzel mesaj çıkacaktır

Zafer Hocanın Yaşı: 26

işte dostlarım private methodunun kullanımı bu şekildedir. Şimdi gelelim diğer erişim methodumuz olan public methoduna


2-) Public

Hem güzel ve bir o kadar da sık kullanılan erişim methodumuz olan public e giriş yapmış bulunmaktayız. Açıklamalarda dediğim gibi buna çoğu yerden erişilir. Gelin bunun örneğini de yapalım hızlı bir şekilde. Fatih isimli class olsun ve bunun bilgisayar markasını construct üzerinden set edelim ve daha sonrasında çağıralım 

<?php

class Fatih{
  public $marka;  // public olarak marka tanımladık
  
  public function __construct(){
     $this->marka="Excalibur G670";  // marka değişkenine Excalibur G670 yazdık
  }
}

$fatih = new Fatih();  // nesne oluşturduk
echo "Fatihin Bilgisayarı: ".$fatih->marka;  // public değişkene erişmeye çalıştık ve yazdırılmasını istedik

?>

bu şekilde kodlarımızı yazdık dostlarım :). Ekrana çıktıyı da aşağıdaki şekildeki gibi rahatça verecektir

Fatihin Bilgisayarı: Excalibur G670

işte dostlarım public erişim methodu ile değişken oluşturma ve kullanma da bu kadar basit :). Zaten önceki örneklerde fonksiyon vs oluşturuken sık sık public ile yaptık erişimde sorun olmayacağını anlamışsınızdır :)


3-) Protected

Dostlarım bunu da yukarıda açıklamada anlatmıştım. Bunu class içerisinde class kullanımı yerine private gibi kullanım yapıp örnek vercem dostlarım :). Örneğimizde şu olacak dostlarım. Arda isimli class olsun ve Arda'nın favori programlama dilini protected ile oluşturalım. Bunu construct üzerinden set edelim ve ekranımıza bastırmayı deneyelim

<?php

class Arda{
  protected $programlama_dili;  // protected olarak programlama_dili tanımladık
  
  public function __construct(){
     $this->programlama_dili="Scratch";  // programlama_dili değişkenine Scratch yazdık
  }
}


$arda = new Arda();  // nesne oluşturduk
echo "Ardanın Favori Programlama Dili: ".$arda->programlama_dili;  // protected değişkene erişmeye çalıştık

?>

bu şekilde dostlarım kodumuzu yazdık. Ekrana yazdıracağımızda hata verecektir. Çünkü dediğim gibi protected erişim methodu private gibi çalışır :)

Fatal error: Uncaught Error: Cannot access protected property Arda::$programlama_dili

burada diyor ki dostlarım "Protected methoda erişilemiyor dostum :)" diye ekranımıza hata bastırıyor. Yazdırmak için şansımız yok mu diyorsunuz dostlarım ve buna cevabım şu olacaktır

Yazdırmak için şansımız var :)

private olayındaki gibi bir ek method açıp yazdıracağız dostlarım :) Hızlıca gelin onu da ayarlayalım

<?php

class Arda{
  protected $programlama_dili;  // protected olarak programlama_dili tanımladık
  
  public function __construct(){
     $this->programlama_dili="Scratch";  // programlama_dili değişkenine Scratch yazdık
  }
  
  public function dil_yazdır(){
    echo "Arda'nın Favori Programlama Dili: ".$this->programlama_dili;  // protected değişkene erişmeye çalıştık
  }
}


$arda = new Arda();  // nesne oluşturduk
$arda->dil_yazdır(); // dil_yazdır methodunu çağırdık

?>

kodumuzu yazdık dostlarım :) ekran çıktımızı inceleyelim şimdi de

Arda'nın Favori Programlama Dili: Scratch

evet dostlarım :). Protected ekrana yazdırma işlemini de aynı private işleminde olduğu gibi bir method oluşturduk ve ekrana basılma işlemini ayarladık :).

Erişim methodları konumuzu da bu yazıda sonlandırmış bulunmaktayız dostlarım :). Umarım anlatabilmişimdir. Karmaşık gelebilir anlıyorum çünkü bu konu ilk başlarda bana da aynı şekilde zor ve karmaşık gelmişti. Nasıl hızlıca kavrarız diyorsanız istikrarlı ve bol pratik yaparak çalışmanız lazım dostlarım. Sonunda başarı sizi buluyor :)

Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :)

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki YazıPHP Class Üzerinde Yapıcı ve Yıkıcı Methodlar
Sonraki YazıPHP Class üzerinde Miras Alma
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz