Магический метод __get - ваш друг:
class MyClass
{
private $field = array();
public function __get($name)
{
if(isset($this->field[$name]))
return $this->field[$name];
else
throw new Exception("$name dow not exists");
}
}
Использование:
$myobj = new MyClass();
echo $myobj->myprop;
Объяснение: Все ваши данные поля хранятся в массиве. При доступе к $myobj->myprop
это свойство явно не существует в классе. Именно здесь вызывается __get
. __get
ищет имя в массиве field
и возвращает правильное значение.