The Reflection API (ReflectionClass, ReflectionMethod, ReflectionProperty, etc.) lets code inspect classes, methods, properties, and attributes at runtime, including private members. It underlies dependency injection containers, ORMs, and serialization libraries that need to construct objects and read metadata generically.
While powerful, reflection carries a performance cost compared to direct code, so frameworks typically cache reflection results rather than re-analyzing classes on every request.