oop — определить защищенный метод и избежать фатальной ошибки

Я должен получить свойства из нескольких классов, хранящихся в одном каталоге.

У меня нет проблем со сбором охраняемой и публичной собственности.

Я только за публикой, так что до сих пор все хорошо.

Что я делаю:

$ foo = new Foo ();
$ отражение = новый ReflectionClass ($ foo);
$ props = $ refle-> getProperties (ReflectionProperty :: IS_PUBLIC | ReflectionProperty :: IS_PROTECTED);
foreach ($ props as $ prop) {
выведите $ prop-> getName (). "\ П";
}

Однако некоторые классы имеют защищенные методы, например :

класс Foo {
public $ foo = 1;
защищенный $ бар = 2;
частный $ baz = 3;

защищенная функция __construct ()
{

}
}

Как только я попадаю в такой класс, я получаю фатальную ошибку, которая останавливает мои усилия:

Неустранимая ошибка: вызов защищенной Foo :: __ construct () из контекста 'View' в [путь / идет / здесь]

Как лучше обойти это? (если есть)

0

Решение

+ Изменить

$foo = new Foo();
$reflect = new ReflectionClass($foo);

в

$reflect = new ReflectionClass('Foo');

Если вы действительно хотите создать новый экземпляр, посмотрите на newInstanceWithoutConstructor функция

1

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

Если вы используете protected или же private тогда ваш конструктор не будет доступен извне класса.

призвание $foo = new Foo(); выдаст ошибку.

$reflect = new ReflectionClass('Foo');
echo $reflect->getName();// output Foo
0

По вопросам рекламы [email protected]