Есть пустой класс:
class Test
{
}
Создаём его экземпляр и наполняем свойствами:
$t = new Test;
$t->var = "привет";
$t->var2 = "пока";
Можно ли как-то из класса вывести список всех таких вот свойств, которые в классе явно не объявлены?
Заранее благодарен за помощь!
Спустя 9 минут, 52 секунды (5.10.2011 - 23:13) Winston написал(а):
А так ?
class Test
{
private $arg = array();
function __set($var, $val)
{
$this->arg[$var] = $val;
}
}
$t = new Test;
$t->var = "привет";
$t->var2 = "пока";
print_r($t);
Спустя 8 минут, 15 секунд (5.10.2011 - 23:21) killer8080 написал(а):
Спустя 8 часов, 32 минуты, 16 секунд (6.10.2011 - 07:53) linker написал(а):
Значитс так. В классе поля либо должны быть объявлены, либо в случае динамических полей используется одно поле + __set(), __get(), ....
class A
{
protected $props = array();
public function __set($name, $value)
{
$this->props[$name] = $value;
}
public function __get($name)
{
return array_key_exists($name, $this->props) ? $this->props[$name] : null;
}
public function __isset($name)
{
return array_key_exists($this->props[$name]);
}
public function __unset($name)
{
if (array_key_exists($this->props[$name]))
unset($this->props[$name]);
}
public function getProps()
{
return $this->props;
}
}
$a = new A();
$a->a = 1;
print_r($a->getProps());
Спустя 2 дня, 3 часа, 19 минут, 31 секунда (8.10.2011 - 11:13) Ronder написал(а):
Спасибо, коллеги! Очень помогли!
Спустя 4 дня, 9 часов, 43 минуты (12.10.2011 - 20:56) Guest написал(а):
используем stdClass не морочим голову другим
_____________