Одной из удобных функций других языков является возможность создавать методы get и set для свойств. Пытаясь найти хороший способ дублировать эту функциональность в PHP, я наткнулся на это: http://www.php.net/manual/en/language.oop5.magic.php#98442
Вот моя разбивка этого класса:
<?php
class ObjectWithGetSetProperties {
public function __get($varName) {
if (method_exists($this,$MethodName='get_'.$varName)) {
return $this->$MethodName();
} else {
trigger_error($varName.' is not avaliable .',E_USER_ERROR);
}
}
public function __set($varName,$value) {
if (method_exists($this,$MethodName='set_'.$varName)) {
return $this->$MethodName($value);
} else {
trigger_error($varName.' is not avaliable .',E_USER_ERROR);
}
}
}
?>
Мой план состоял в том, чтобы расширить этот класс и определить соответствующие get_someproperty()
и set_someproperty()
в этом расширенном классе.
<?php
class SomeNewClass extends ObjectWithGetSetProperties {
protected $_someproperty;
public function get_someproperty() {
return $this->_someproperty;
}
}
?>
Проблема в том, что базовый класс ObjectWithGetSetProperties
не может увидеть мой метод get_someproperty()
в SomeNewClass
. Я всегда получаю сообщение об ошибке "ключ недоступен".
Есть ли способ решить эту проблему, позволяя базовому классу ObjectWithGetSetProperties
работать, или мне придется создавать магические методы __get()
и __set()
в каждом классе?