Я не могу использовать просто get_class_vars()
потому что мне нужен он для работы с версией PHP ранее, чем 5.0.3 (см. Журнал изменений http://pl.php.net/get_class_vars),
Кроме того: Как я могу проверить, является ли собственность общественной?
Это возможно при использовании отражения.
<?php
class Foo {
public $alpha = 1;
protected $beta = 2;
private $gamma = 3;
}
$ref = new ReflectionClass('Foo');
print_r($ref->getProperties(ReflectionProperty::IS_PUBLIC));
Результат:
Array
(
[0] => ReflectionProperty Object
(
[name] => alpha
[class] => Foo
)
)
Или вы можете сделать так:
$getPublicProperties = create_function('$object', 'return get_object_vars($object);');
var_dump($getPublicProperties($this));