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?
Задача ещё не решена.
Других решений пока нет …