ocramius/code-generator-utils

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

Fund package maintenance!
Ocramius

Installs: 1 311 035

Dependents: 2

Suggesters: 1

Security: 0

Stars: 99

Watchers: 4

Forks: 22

Open Issues: 7

1.7.0 2024-01-09 06:43 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.

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!