Download the PHP package dg/parser-reflection without Composer
On this page you can find all versions of the php package dg/parser-reflection. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download dg/parser-reflection
More information about dg/parser-reflection
Files in dg/parser-reflection
Package parser-reflection
Short Description Provides reflection information, based on raw source
License MIT
Informations about the package parser-reflection
Parser Reflection API Library
This is fork of great goaop/parser-reflection library with some modifications.
Parser Reflection API library provides a set of classes that extend original internal Reflection classes, but powered by PHP-Parser library thus allowing to create a reflection instance without loading classes into the memory.
This library can be used for analysing the source code for PHP versions 5.5, 5.6, 7.0; for automatic proxy creation and much more.
Installation
Library can be installed with Composer. Installation is quite easy:
Composer will install the library to your project's vendor/dg/parser-reflection
directory.
Usage
Initialization
Prior to the first use library can be optionally initialized. If you use Composer for installing packages and loading classes, then you shouldn't worry about initialization, library will be initialized automatically.
If project uses a custom autoloader then you should follow the next steps:
- Create a new class that implements
\Go\ParserReflection\LocatorInterface
- Create an instance of that class and pass it to the
ReflectionEngine::init()
method for initial configuration
Reflecting concrete classes/methods/properties without loading them
Just use Go\ParserReflection
package reflection classes like traditional ones:
Or you can use an additional classes ReflectionFileNamespace
to analyse a raw PHP files:
How it works?
To understand how library works let's look at what happens during the call to the new \Go\ParserReflection\ReflectionClass(SomeClass::class)
\Go\ParserReflection\ReflectionClass
asks reflection engine to give an AST node for the given class name- Reflection engine asks a locator to locate a filename for the given class
ComposerLocator
instance asks the Composer to find a filename for the given class and returns this result back to the reflection engine- Reflection engine loads the content of file and passes it to the PHP-Parser for tokenization and processing
- PHP-Parser returns an AST (Abstract Syntax Tree)
- Reflection engine then analyse this AST to extract specific nodes an wrap them into corresponding reflection classes.
Compatibility
All parser reflection classes extend PHP internal reflection classes, this means that you can use \Go\ParserReflection\ReflectionClass
instance in any place that asks for \ReflectionClass
instance. All reflection methods should be compatible with original ones, providing an except methods that requires object manipulation, such as invoke()
, invokeArgs()
, setAccessible()
, etc. These methods will trigger the autoloading of class and switching to the internal reflection.