Почему get_object_vars возвращает закрытые и защищенные свойства в статическом методе

get_object_vars Функция предположительно чувствительна к области действия, поскольку она будет возвращать только те свойства, к которым у нее есть доступ в текущей области.

Учитывая следующий грубый пример, почему вызов функции возвращает все три свойства независимо от их видимости?

<?php

class A
{
private $b = 'foo';
protected $c = 'bar';
public $d = 'baz';

public static function getPublicProperties(\A $object)
{
return get_object_vars($object);
}
}

$a = new \A();

var_dump(\A::getPublicProperties($a));

Результат:

array(3) {
'b' =>
string(3) "foo"'c' =>
string(3) "bar"'d' =>
string(3) "baz"}

getPublicProperties Метод является статическим, но может получить доступ к закрытым и защищенным свойствам переданного объекта. Это ошибка в PHP?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …