I think a more accurate explanation is this:
The Reflection classes are designed to reflect upon the source code of an application, not on any runtime information.
I think you misunderstand the ReflectionProperty constructor in your example above. The fact that it accepts an object as argument is just a convenience feature - you are actually inspecting the class of that object, not the object itself, so it's basically equivalent to:
<?php
// works fine
$Reflection = new ReflectionProperty(get_class($a), 'a');
// throws exception
$Reflection = new ReflectionProperty(get_class($a), 'foo');
?>
Getting the class of the object you're passing in is implied, since inspecting a defined property is the purpose of this class.
In your example, $a->foo is a dynamic member - it is not defined as a member of class, so there is no defining class reference, line number, default value, etc. - which means, there is nothing to reflect upon.
Clearly this very useful library could use some real documentation...ReflectionProperty
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
ReflectionProperty
Референца за `class.reflectionproperty.php` со подобрена типографија и навигација.
Класата ReflectionProperty
класата mysqli_driver
Вовед
На ReflectionProperty класата известува информации за својствата на класата.
Синопсис на класата
public setAccessible(bool
$accessible): voidСвојства
- name
-
Име на својството. Само за читање, фрла ReflectionException при обид за пишување.
- class
-
Име на класата каде што е дефинирано својството. Само за читање, фрла ReflectionException при обид за пишување.
Претходно дефинирани константи
Модификатори на ReflectionProperty
-
ReflectionProperty::IS_STATICint -
Индицира static својства. Пред PHP 7.4.0, вредноста беше
1. -
ReflectionProperty::IS_READONLYint -
Индицира readonly својства. Достапно од PHP 8.1.0.
-
ReflectionProperty::IS_PUBLICint -
Индицира public својства. Пред PHP 7.4.0, вредноста беше
256. -
ReflectionProperty::IS_PROTECTEDint -
Индицира protected својства. Пред PHP 7.4.0, вредноста беше
512. -
ReflectionProperty::IS_PRIVATEint -
Индицира private својства. Пред PHP 7.4.0, вредноста беше
1024. -
ReflectionProperty::IS_ABSTRACTint - Индицира дека својството е abstract. Достапно од PHP 8.4.0.
-
ReflectionProperty::IS_PROTECTED_SETint - ), не се совпаѓа.
-
ReflectionProperty::IS_PRIVATE_SETint - ), не се совпаѓа.
-
ReflectionProperty::IS_VIRTUALint - ), не се совпаѓа.
-
ReflectionProperty::IS_FINALint - Индицира дека својството е final. Достапно од PHP 8.4.0.
Забелешка:
Вредностите на овие константи може да се променат помеѓу верзиите на PHP. Се препорачува секогаш да ги користите константите и да не се потпирате директно на вредностите.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.4.0 | Константите на класата сега се типизирани. |
| 8.4.0 |
Додадено ReflectionProperty::IS_VIRTUAL,
ReflectionProperty::IS_PRIVATE_SET,
ReflectionProperty::IS_PROTECTED_SET,
ReflectionProperty::IS_ABSTRACTПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во ReflectionProperty::IS_FINAL.
|
| 8.0.0 | (PHP 5, PHP 7, PHP 8) Враќа ODBC резултат објект ако SQL командата беше успешно извршена, или |
Содржина
- ReflectionProperty::__clone — Клонирај
- ReflectionProperty::__construct — Конструира објект ReflectionProperty
- ReflectionProperty::export — Експортирај
- ReflectionProperty::getAttributes — Добива атрибути
- ReflectionProperty::getDeclaringClass — Добива класа што ја декларира
- ReflectionProperty::getDefaultValue — Го враќа стандардното вредност декларирано за својство
- ReflectionProperty::getDocComment — Го добива коментарот на документот на својството
- ReflectionProperty::getHook — Враќа објект за рефлексија за наведен кука
- ReflectionProperty::getHooks — Враќа низа од сите куки на ова својство
- ReflectionProperty::getModifiers — Ги добива модификаторите на својството
- ReflectionProperty::getName — Го добива името на својството
- ReflectionProperty::getRawValue — Враќа вредност на својство, заобиколувајќи кука за добивање ако е дефинирана
- ReflectionProperty::getSettableType — Враќа тип на параметар на кука за поставување
- ReflectionProperty::getType — Го добива типот на својството
- ReflectionProperty::getValue — Добива вредност
- ReflectionProperty::hasDefaultValue — Проверува дали својството има декларирана стандардна вредност
- ReflectionProperty::hasHook — Враќа дали својството има дефинирана дадена кука
- ReflectionProperty::hasHooks — Враќа дали својството има дефинирани куки
- ReflectionProperty::hasType — Проверува дали својството има тип
- ReflectionProperty::isAbstract — Определува дали својството е апстрактно
- ReflectionProperty::isDefault — Проверува дали својството е стандардно својство
- ReflectionProperty::isDynamic — Проверува дали својството е динамично својство
- ReflectionProperty::isFinal — Определува дали ова својство е конечно или не
- ReflectionProperty::isInitialized — Проверува дали својството е иницијализирано
- ReflectionProperty::isLazy — Проверува дали својството е мрзливо
- ReflectionProperty::isPrivate — Проверува дали својството е приватно
- ReflectionProperty::isPrivateSet — Проверува дали својството е приватно за пишување
- ReflectionProperty::isPromoted — Проверува дали својството е промовирано
- ReflectionProperty::isProtected — Проверува дали својството е заштитено
- ReflectionProperty::isProtectedSet — Проверува дали својството е заштитено за пишување
- ReflectionProperty::isPublic — Проверува дали својството е јавно
- ReflectionProperty::isReadOnly — Проверува дали својството е само за читање
- ReflectionProperty::isStatic — Проверува дали својството е статично
- ReflectionProperty::isVirtual — Определува дали својството е виртуелно
- ReflectionProperty::setAccessible — Постави пристапност на својството
- ReflectionProperty::setRawValue — Ја поставува вредноста на својството, заобиколувајќи ја куката за поставување ако е дефинирана
- ReflectionProperty::setRawValueWithoutLazyInitialization — Постави сурова вредност на својството без да предизвика мрзливо иницијализирање
- ReflectionProperty::setValue — Постави вредност на својството
- ReflectionProperty::skipLazyInitialization — Означува својство како не-мрзливо
- ReflectionProperty::__toString — Стринг