Проверьте переменную public php - PullRequest
0 голосов
/ 07 сентября 2011

Я хочу проверить, является ли локальная переменная в классе публичной или приватной. Причина в том, чтобы создать такую ​​функцию:

function ToArray() {
  $arr = array();
  foreach($this as $key => $val) {
    $arr[$key] = $val;
  }
  return $arr;
}

Эта функция также возвращает приватные поля, и я этого не хочу. Как я могу получить только открытые переменные здесь?

Ответы [ 3 ]

3 голосов
/ 07 сентября 2011

С документация 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);
0 голосов
/ 07 сентября 2011

Чтобы получить список всех общедоступных атрибутов, позвоните get_object_vars().

(Подсказка: вызов его самим объектом вернет все атрибуты.)

0 голосов
/ 07 сентября 2011

Обязательно соблюдайте некоторые соглашения по именованию с вашими личными переменными (например, я добавляю их к _)

Затем просто возвращайте те переменные, которые не имеют _ вначало их ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...