Skip to content
This repository was archived by the owner on Dec 23, 2023. It is now read-only.

grom358/php-static-reflection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

php-static-reflection

Implementation of Reflection API that parses PHP source files. This allows reflection without loading a class. Since PHP has no way of unloading classes this is useful to reduce memory footprint when you need to inspect a class but don't need to load it, for example extracting meta data.

Below is a benchmark comparing Reflection to StaticReflection on drupal 8 test classes:

Metric Reflection StaticReflection
CPU Time 0.38s 3.92s
Peak Memory 46Mb 9.2Mb
Function Calls 62,595 794,726

Resolving constants, properties, and methods requires looking at parent class, used traits and implemented interfaces. This resolving is done as need (ie. lazy loaded) and therefore by default reflection objects are cached. So its possible to reduce the memory usage even further by unloading reflection objects from cache that won't be needed by another class after its processed without affecting performance. For example, in the above benchmark after extracting information from the test class it could be unloaded.

StaticReflection does not implement all of the Reflection API, but it aims to implement anything that can be done statically. As such it implements more of the API then other libraries like Doctrine Common.

About

Static Reflection API

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages