Мне нужно использовать PHP Reflection API , чтобы получить все общедоступные свойства для класса, которого не указано c.
In Чтобы получить только свойства publi c, которые не являются stati c, я смог увидеть только один способ получить свойства IS_STATI C и использовать array_diff()
, чтобы получить только свойства publi c .
Конечный класс выглядит следующим образом:
class foo {
public static $a;
public static $b;
public static $c;
public $d;
public $e;
public $f;
public function reflect()
{
$reflection = new ReflectionClass($this);
$public = $reflection->getProperties(ReflectionProperty::IS_PUBLIC);
$static = $reflection->getProperties(ReflectionProperty::IS_STATIC);
$properties = array_diff($public, $static);
foreach($properties as $property) {
echo $property->name . "n";
}
}
}
Вызов:
$foo = new foo;
$foo->reflect();
Вывод reflect()
теперь выглядит следующим образом:
d
e
f
Вопрос: Есть ли лучший способ сделать это?
Примечание : Мой первоначальный класс слишком длинный! Этот класс является примером для меня.