ocramius/code-generator-utils

基于 PHP-Parsers 的一组代码生成工具,便于与反射结合使用

1.7.0 2024-01-09 06:43 UTC

README

Code Generation Utils 是一个小的库,目前还没有打算用于通用。

这是一个小项目,旨在收集我经常遇到代码生成问题的常见解决方案,目前还没有一个真正稳固的结构。

我构建它是为了解决我在使用 Zend\Code 时经常遇到的限制,并且它主要基于 PHP-Parser 的逻辑。

当这两个都达到了至少 1.0.0 版本时,它将与 GeneratedHydratorProxyManager 一起稳定下来。

安装

支持的安装方式是通过 composer

php composer.phar require ocramius/code-generator-utils

提供组件

提供的组件通常与代码生成和相关问题有关。

CodeGenerationUtils\Autoloader

这是一个基于回调的小型自动加载组件 - 应在尝试自动加载生成的类时使用。

CodeGenerationUtils\FileLocator

FileLocator 基本上代表一个映射,将生成的类名映射到包含这些类的文件,这些文件应该从中读取或写入。此组件对于不遵守 PSR-0 的生成的代码可能很有用。

CodeGenerationUtils\GeneratorStrategy

提供将 PHP-Parser AST 序列化为类的逻辑。当前的策略允许:

  • 将 AST 序列化为字符串
  • 将 AST 序列化为字符串并在运行时评估它(通过 eval()
  • 将 AST 序列化为字符串并将其保存到文件中(通过 CodeGenerationUtils\FileLocator

CodeGenerationUtils\Inflector

提供各种工具:

  • 将生成代码的 FQCN 转换为其生成类的 FQCN
  • 给定一个原始类名和一些要编码的任意参数,生成一个生成类的 FQCN(允许从原始类生成多个生成类)
  • 生成唯一的有效标识符名称

CodeGenerationUtils\ReflectionBuilder

这是一个非常基本的转换器,它从反射对象构建 PHP-Parser AST 节点(仍在进行中)

CodeGenerationUtils\Visitor

在给定的 PHP-Parser AST 中用于操作类、方法和属性的各个访问者

贡献

如果您想帮忙,请阅读 CONTRIBUTING.md 的内容!