Вопросы по отражениям, Приватные методы и приватные свойства. Время создания

После прочтения главы об отражениях из учебника Котерова осталась неясна пара моментов.

  1. При создании отражения некоторого класса (ReflectionClass), отражения его параметров(ReflectionParameter) и методов (ReflectionMethod) формируются сразу же, автоматически или только при их явном вызове ( например ReflectionClass::getPMethods())?
  2. С чем связана, такая несколько на мой взгляд странная система наследования свойств и методов в отражениях, при которой метод getMethods() возвращает список всех методов класса, в том числе и закрытых, унаследованных от базового, а метод getProperties() закрытых свойств родительского объекта не наследует?

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

список завершён, или пока ещё редактируется?

_____________
матфак вгу и остальная классика =)

Voronve's picture

если вы про список вопросов, то завершен

vedro-compota's picture

принято, ответ будет.

_____________
матфак вгу и остальная классика =)

melisa's picture

Вот насчёт второго вопроса, не знаю, что ответить.

Действительно, логично, что приватные свойства не наследуются, поэтому не возвращаются методом getProperties(). А вот почему наследуются приватные методы - не понятно. (данный факт указан в "PHP в подлиннике" Д. Котеров, стр. 577, и проверен на практике :)))

Кстати, вызвать унаследованные приватные методы с помощью метода invoke() не получится :

Uncaught ReflectionException: Trying to invoke private method ...

подробнее см. здесь: http://fkn.ktu10.com/?q=node/10126

Voronve's picture

Что ж, воспримем это как еще одну данность php )