ocramius/code-generator-utils

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

Installs: 17 916

Dependents: 3

Stars: 20

Watchers: 3

Forks: 4

Language: PHP

0.3.2 2015-07-01 00:08 UTC

README

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

Installation

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.

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!