tourze/php-packer-generator
最新稳定版本:0.0.1
Composer 安装命令:
composer require tourze/php-packer-generator
包简介
代码生成工具,用于PHP代码的合并、优化和格式控制
README 文档
README
The PHP-Packer-Generator is a code generation component for the PHP-Packer project, responsible for merging, optimizing, and formatting PHP code.
Features
- Code Merging: Merge multiple PHP files into a single file.
- Code Optimization: Support for code minification, comment preservation, and more.
- Output Formatting: Control the formatting and style of the generated code.
- Resource Embedding: Generate code to embed resource files.
- Highly Extensible: Support custom code optimizers and formatters.
Installation
Requirements:
- PHP >= 8.1
- Composer
Install via Composer:
composer require tourze/php-packer-generator
Quick Start
Basic usage example:
use PhpPacker\Generator\CodeGenerator; use PhpPacker\Generator\Config\GeneratorConfig; use PhpPacker\Ast\AstManager; use Psr\Log\LoggerInterface; // Create config $config = new GeneratorConfig(); $config->setPreserveComments(true); $config->setRemoveNamespace(false); // Create code generator $astManager = new AstManager($logger); // $logger must implement LoggerInterface $generator = new CodeGenerator($config, $astManager, $logger); // Generate code $code = $generator->generate($astManager, $phpFiles, $resourceFiles);
Custom Code Generation
You can extend the code generation process by implementing your own CodeOptimizer and CodeFormatter:
use PhpPacker\Generator\Optimizer\CustomOptimizer; use PhpPacker\Generator\Formatter\CustomFormatter; $optimizer = new CustomOptimizer(); $formatter = new CustomFormatter(); $generator = new CodeGenerator($config, $astManager, $logger, $optimizer, $formatter);
Configuration
The GeneratorConfig class provides options to control code generation:
setPreserveComments(bool $preserve): Whether to keep comments.setRemoveNamespace(bool $remove): Whether to remove namespaces (useful for KPHP compatibility).setOptimizeCode(bool $optimize): Enable/disable code optimization.setLineEnding(?string $ending): Set custom line ending (e.g.,"\r\n").setIndentationSize(int $size): Set indentation size.setIndentationChar(string $char): Set indentation character (e.g., space or tab).
Advanced Usage
- Resource Embedding: Use
ResourceHolderGeneratorto generate code for resource files. - Custom Visitors: Implement your own AST visitors for advanced code transformations.
Contribution Guide
- Please submit issues and pull requests via GitHub.
- Follow PSR code style guidelines.
- Ensure all tests pass (
phpunit). - Add tests for new features.
License
MIT License. See LICENSE for details.
Changelog
See Releases for version history and upgrade notes.
统计信息
- 总下载量: 6
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-04-17