A set of code generator utilities built on top of PHP-Parsers that ease its use when combined with Reflection

0.3.2 2015-07-01 00:08 UTC


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.

Tests Releases Downloads Dependencies
Build Status Coverage Status Latest Stable Version Latest Unstable Version Total Downloads Dependency Status


Supported installation method is via composer:

$ php composer.phar require ocramius/code-generator-utils:0.3.*

Provided components

The provided components are generally related with code generation and related problems.


This is a small callback-based autoloader component - it should be used when trying to autoload generated classes.


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.


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)

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

Very rudimentary converter that builds PHP-Parser AST nodes from Reflection objects (still WIP)


Various visitors used to manipulate classes, methods and properties in a given PHP-Parser AST


Please read the CONTRIBUTING.md contents if you wish to help out!