Tüm PHP birinci sınıf tanımında özellik adı arar ve değerini döndürmeye çalışır. Hiçbir özellik varsa - PHP __ get ($ var) aramak ve burada istediğiniz bir şey dönebilirsiniz çalışır. Bu size erişmek istediğiniz her sınıf üyesi için onları tanımlamak zorunda Java benzeri alıcılar / ayarlayıcıları bilenler için biraz kafa karıştırıcı bir davranıştır.
Java gibi alıcılar / ayarlayıcıları kullanmak için rahat - Eğer böyle bir şey yazabilirsiniz:
public function __set($var, $value)
{
if (method_exists($this, $method = "_set_" . $var))
{
call_user_func(array($this, $method), $value);
}
}
public function __get($var)
{
if (method_exists($this, $method = "_get_" . $var))
{
return call_user_func(array($this, $method), $value);
}
}
ve daha sonra özel alıcılar / ayarlayıcıları tanımlayarak bu kodu kullanabilirsiniz
protected function _get_myValue()
{
return $this->_myValue;
}
protected function _set_myValue($value)
{
$this->_myValue = $value;
}
ve tanımlanmış yöntemlerine erişim bu şekilde:
$obj->myValue = 'Hello world!';