Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Ocramius/CodeGenerationUtils
A set of code generator utilities built on top of PHP-Parsers that ease its use when combined with Reflection
https://github.com/Ocramius/CodeGenerationUtils
Last synced: 3 months ago
JSON representation
A set of code generator utilities built on top of PHP-Parsers that ease its use when combined with Reflection
- Host: GitHub
- URL: https://github.com/Ocramius/CodeGenerationUtils
- Owner: Ocramius
- License: mit
- Created: 2013-07-27T00:06:12.000Z (over 11 years ago)
- Default Branch: 1.8.x
- Last Pushed: 2024-07-30T18:05:12.000Z (4 months ago)
- Last Synced: 2024-07-31T17:31:12.718Z (4 months ago)
- Language: PHP
- Size: 1.27 MB
- Stars: 99
- Watchers: 4
- Forks: 22
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# 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`](https://github.com/zendframework/zend-code),
and it is mainly based on the logic of [PHP-Parser](https://github.com/nikic/PHP-Parser).It will be stabilized together with [GeneratedHydrator](https://github.com/Ocramius/GeneratedHydrator)
and [ProxyManager](https://github.com/Ocramius/ProxyManager) when these two both have
reached at least version `1.0.0`.Releases | Downloads |
-------- | ------- |
[![Latest Stable Version](https://poser.pugx.org/ocramius/code-generator-utils/v/stable.png)](https://packagist.org/packages/ocramius/code-generator-utils) [![Latest Unstable Version](https://poser.pugx.org/ocramius/code-generator-utils/v/unstable.png)](https://packagist.org/packages/ocramius/code-generator-utils)|[![Total Downloads](https://poser.pugx.org/ocramius/code-generator-utils/downloads.png)](https://packagist.org/packages/ocramius/code-generator-utils)|## Installation
Supported installation method is via composer:
```sh
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](http://php.net/manual/en/language.namespaces.rules.php)
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](https://github.com/Ocramius/CodeGenerationUtils/blob/master/CONTRIBUTING.md) contents
if you wish to help out!