Awesome
Code Generation Utils for PHP-Parser
Code Generation Utils is a small library that is not yet intended for general use.
It is a small project that aims at collecting common solutions to code generation problems that I often face, and for now it doesn't have a really solid structure.
I built it to workaround limitations that I often faced while working
with Zend\Code
,
and it is mainly based on the logic of PHP-Parser.
It will be stabilized together with GeneratedHydrator
and ProxyManager when these two both have
reached at least version 1.0.0
.
Releases | Downloads |
---|---|
Installation
Supported installation method is via composer:
php composer.phar require ocramius/code-generator-utils
Provided components
The provided components are generally related with code generation and related problems.
CodeGenerationUtils\Autoloader
This is a small callback-based autoloader component - it should be used when trying to autoload generated classes.
CodeGenerationUtils\FileLocator
The FileLocator basically represents a map of generated class names to files where those classes should be read from or written to. This component can be useful for non-PSR-0-compliant generated code.
CodeGenerationUtils\GeneratorStrategy
Provides logic to serialize a PHP-Parser AST to a class. Current strategies allow to:
- Serialize an AST to a string
- Serialize an AST to a string and evaluate it (via
eval()
) at runtime - Serialize an AST to a string and save it to a file (via
CodeGenerationUtils\FileLocator
)
CodeGenerationUtils\Inflector
Provides various utilities to:
- Convert a generated code's FQCN to the FQCN of the class from which it was generated
- Generate the FQCN of a generated class given an original class name and some arbitrary parameters to be encoded (allows multiple generated classes per origin class)
- Generate unique valid identifier names
CodeGenerationUtils\ReflectionBuilder
Very rudimentary converter that builds PHP-Parser AST nodes from Reflection objects (still WIP)
CodeGenerationUtils\Visitor
Various visitors used to manipulate classes, methods and properties in a given PHP-Parser AST
Contributing
Please read the CONTRIBUTING.md contents if you wish to help out!