Я хочу проверить, является ли локальная переменная в классе общедоступной или частной. Причина заключается в создании такой функции:
function ToArray() { $arr = array(); foreach($this as $key => $val) { $arr[$key] = $val; } return $arr; }
Эта функция также возвращает частные поля, и я не хочу этого. Как я могу получить здесь только общедоступные переменные?
Из документации PHP ,
$foo = new Foo(); $reflect = new ReflectionClass($foo); $props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC); foreach ($props as $prop) { print $prop->getName() . "\n"; } var_dump($props);
Обязательно соблюдайте некоторые соглашения об именах с вашими частными переменными (например, я добавляю их с _
)
Затем просто верните те переменные, которые не имеют _
в начале своего ключа.
Чтобы получить список всех открытых атрибутов, вызовите get_object_vars()
.
(Подсказка: вызов этого объекта будет возвращать все атрибуты.)