PHP Dersleri

Php Nesne Yönelimli Programlama (Protected)

Protected komutuyla oluşturulan metot ve argümanlara yalnızca sınıf içerisinden ve türetilen sınıf içerisinden erişilebilinir. Protected olarak tanımlanan bir metot veya argümana sınıf dışından erişilemez. Bu bağlamda private deyimiyle de benzerlik göstermektedir. Fakat protected, miras olarak belirlenen extends ile erişilebilir duruma gelmektedir.

class dersler{
     public function giris(){
          echo "Merhaba, Hoş Geldiniz.";
     }
}
 
$php = new dersler();
$php->giris();

Yukarıdaki örnekte bir sınıf içerisinde yer alan public deyimi yer almaktadır. Public, herkese açık bir ifade olduğu için aşağıda tanımlanan bilgiler doğrultusunda gereli işlemi gerçekleştirecektir. Fakat public deyimini protected ile değiştirdiğimizde çalışmasını durdurarak hata verecektir. Bu hata protected deyiminin direkt erişime kapalı olmasından kaynaklanmaktadır. Bunun için farklı bir public tanımlaması içerisinden protected deyimi çalıştırılmalıdır. Yani şöyle;

class dersler{
     protected function giris(){
          echo "Merhaba, Hoş Geldiniz.";
     }
 
     public function ozel_giris(){
          echo $this->giris();
     }
}
 
$php = new dersler();
$php->ozel_giris();

Tanımda da söylediğim gibi protected deyimine direk ulaşım yapılmadığı için, public deyimi altında belirlenen fonksiyonda protected deyimini seçerek yazdırdık. Yazdırma işlemi için $php->giris(); yerine $php->ozel_giris(); değerini kullandık. Çünkü bu değer, public ile tanımlandığı için dışarıya bilgi vermektedir.

Buraya kadar anlatmış olduğum kullanımın aynısını private deyimide yapmaktadır. Peki öyleyse protected deyiminin private deyiminden farkı nedir? Gelin bu sorumuza da cevap bulalım.

Yukarıdaki örneklerde sadece tek bir sınıf içerisinde işlemler gerçekleştirdik. İşin içerisine ikinci bir sınıf tanımlaması girdiğinde private ve protected deyimlerinin ayrıştırğını göreceksiniz. Çünkü private sadece belirlenen sınıf içerisinde çalışırken, protected farklı sınıflardan çağırıldığında da işlem yapmaktadır. Yani korunaklı ve farklı sınıflar tarafından da kullanılmasını istiyorsanız o zaman protected deyimini tercih etmeniz gerekmektedir.

class konular{
     protected  function icerik(){
          echo "Echo ve Print Kullanımı";
     }
}
 
class dersler extends konular{
     public function ozel_giris(){
          echo $this->icerik();
     }
}
 
$php = new dersler();
$php->ozel_giris();

Bu şekilde tanımlanan farklı bir sınıfta yer alan protected deyimine ulaşmak mümkündür. Dersler sınıfında yer alan extends kısaca tanımlanan diğer sınıftan bilgileri almaktadır. Bu karşınıza miras olarak çıkacaktır. Farklı bir sınıftan alınan değer protacted ile çalışırken, private kullanımında çalışmayacaktır. Aralarında ki en temek fark budur.

Daha Fazla Göster

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Kapalı