PHP'de OOP'de Sihir ile Özellik Alma
İnceleyeceğimiz bir sonraki sihirli metodun adı __get'dır. Bu
metot, özel veya korumalı bir özelliğin değerini okumaya çalıştığınızda tetiklenir.
Eğer bir sınıfta __get metodunu uygularsanız, var olmayan
veya gizli özelliklere yapılan tüm erişimler bu metot tarafından
işlenecektir.
Bu durumda PHP otomatik olarak istenen özelliğin adını bu metodun ilk parametresine iletecek, ve bu metot tarafından döndürülen değer, erişilen özelliğin değeri olarak kabul edilecektir.
Muhtemelen henüz nasıl çalıştığı çok anlaşılır değil, bu yüzden pratik bir
örneğe bakalım. Diyelim ki özel ve genel
özelliklere sahip şöyle bir Test sınıfımız var:
<?php
class Test
{
public $prop1 = 1; // genel özellik
private $prop2 = 2; // özel özellik
}
?>
Şimdi sınıfımıza, başlangıçta sadece
erişilen özelliğin adını döndürecek olan sihirli
__get metodunu ekleyelim:
<?php
class Test
{
public $prop1 = 1;
private $prop2 = 2;
public function __get($property)
{
return $property; // sadece özellik adını döndür
}
}
?>
Oluşturulan sihirli metodun çalışmasını test edelim. Üç tür özelliğe erişelim: genel bir özelliğe, özel bir özelliğe ve var olmayan bir özelliğe:
<?php
$test = new Test;
// Genel özelliğe erişiyoruz:
echo $test->prop1; // 1 çıktısını verir - yani özelliğin değeri
// Özel özelliğe erişiyoruz:
echo $test->prop2; // 'prop2' çıktısını verir - özellik adı
// Var olmayan özelliğe erişiyoruz:
echo $test->prop3; // 'prop3' çıktısını verir - özellik adı
?>
Gördüğünüz gibi, sihirli metodumuz özel ve var olmayan özelliklere erişime tepki veriyor, ancak genel özelliklere erişimi görmezden geliyor - onlar daha önce olduğu gibi çalışmaya devam ediyor.