tourze / php-packer-generator
代码生成工具,用于PHP代码的合并、优化和格式控制
0.0.1
2025-04-17 09:42 UTC
Requires
- php: ^8.1
- nikic/php-parser: ^5.3.0
- psr/log: ^3|^2|^1
- tourze/php-packer-ast: 0.0.*
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2025-04-21 06:28:59 UTC
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
ResourceHolderGenerator
to 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.