bu yazıda sizlere public, protected ve private kullanımını anlatmaya çalışacağım. ilk olarak ne anlama geldiklerine bakalım.
public olarak işaretlenen öğeye hem sınıf içinden, hemde dışarıdan ulaşılabilir.
protected olarak işaretlenen öğeye hem sınıf içerisinden hemde bu sınıf tarafından kalıtım yoluyla türemiş sınıflardan ulaşılabilir.
private olarak işaretlenmiş öğeye ise sadece sınıf içerisinden ulaşılabilir.
şimdi bir örnekle devam edelim :
class sinif { public $isim; protected $soyisim; private $sifre; function __construct () { $this->isim = 'emre'; $this->soyisim = 'cevik'; $this->sifre = '123456'; } function goster() { echo $this->isim.'<br>'; echo $this->soyisim.'<br>'; echo $this->sifre.'<br>'; } public function __get($key) { return $this->$key; } }
sinifimizi tanimladik simdi sinifimizdaki değişkenlere ulaşmaya çalışacağız
sınıfımızı oluşturalım :
$A = new sinif();
sınıf öğelerine dışardan ulaşmaya çalışalım :
echo $A->isim;
echo $A->soyisim;
echo $A->sifre;
bu kodun ekran çıktısı aşağıdaki gibi olur
emre
Fatal error: Cannot access protected property sinif::$soyisim
Fatal error: Cannot access private property sinif::$sifre
yani burdan anlıyoruzki private ve protected olan değişkenlere sınıf dışarısından ulaşamıyoruz.
şimdi sınıf içindeki goster() methodunu kullanarak ulaşalım
$A->goster();
bu kodun ekran çıktısı :
emre
cevik
123456
evet böylece 3 değişkenede sınıf içerisinden erişebildiğimizi gördük.
private ve protected değişkenlere dışardan ulaşmanın bir yöntemide sınıf içerisinde public bir fonksiyon tanımlayıp private olan değeri dışarı aktarmaktır.
echo $A->__get(’sifre’);
kodunu çalıştırdığımızda ekran çıktısı
123456
olacaktır.
şimdi örneğimizi biraz geliştirelim bir sınıf daha oluşturalım ve bunu “sinif” sınıfından türetelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | class sinif { public $isim; protected $soyisim; private $sifre; function __construct () { $this->isim = 'emre'; $this->soyisim = 'cevik'; $this->sifre = '123456'; } function goster() { echo $this->isim.'<br>'; echo $this->soyisim.'<br>'; echo $this->sifre.'<br>'; } } class turemis extends sinif { function __construct () { parent::__construct(); } public function goster() { echo $this->isim.'<br>'; echo $this->soyisim.'<br>'; echo $this->sifre.'<br>'; } } |
sınıfımızı oluşturalım :
$A = new turemis();
sınıf öğelerine dışardan ulaşmaya çalışalım :
echo $A->isim;
echo $A->soyisim;
echo $A->sifre;
bu kodun ekran çıktısı aşağıdaki gibi olur
emre
Fatal error: Cannot access protected property turemis::$soyisim
// boş veri döndürür
public veriye dışardan ulaşabilirken, önceki örnekte olduğu gibi protected üyeye ulaşamadık. private ise kalıtımda turemis sınıfına aktarılmadığı için boş değer olarak döndü.
şimdi sınıf içindeki goster() methodunu kullanarak ulaşalım
$A->goster();
bu kodun ekran çıktısı :
emre
cevik
// bos veri döndürür
yani burdan anlıyoruzki türemiş sınıflar türetildikleri sınıfın protected ve public değişkenlerine ulaşırken. private değişkenlerine ulaşamazlar.
benzer konular:














design patterns