tourze / php-packer-parser
PHP代码解析器,用于处理PHP代码及其依赖的解析和处理
0.0.1
2025-04-17 09:42 UTC
Requires
- php: ^8.1
- psr/log: ^3|^2|^1
- symfony/stopwatch: ^6.4
- tourze/php-packer-analysis: 0.0.*
- tourze/php-packer-ast: 0.0.*
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2025-05-08 07:53:07 UTC
README
PHP Packer Parser is an advanced PHP code parser and dependency analyzer library. Built on top of PHP Packer AST and PHP Packer Analysis, it provides a simple API to recursively parse PHP files, track dependencies, support PSR-4 autoloading and performance profiling.
Features
- Recursively parse PHP files and their dependencies
- Track and analyze file dependencies
- PSR-4 compatible namespace mapping and file resolution
- Performance timing and monitoring
- Robust error handling and exception mechanism
- Highly customizable parser configuration
Installation
Requires PHP 8.1 or above.
Install via Composer:
composer require tourze/php-packer-parser
Quick Start
Parse PHP files and dependencies
use PhpPacker\Parser\ParserFactory; // Create a parser $parser = ParserFactory::create( '/path/to/entry.php', ['*vendor/symfony/*', '*tests/*'] // Exclude patterns ); // Parse entry file and all dependencies $parser->parse('/path/to/entry.php'); // Get processed files $processedFiles = $parser->getProcessedFiles(); // Get dependencies $dependencies = $parser->getDependencies();
Custom configuration
use PhpPacker\Parser\Config\ParserConfig; use PhpPacker\Parser\ParserFactory; $config = new ParserConfig(); $config->setEnableStopwatch(true); $config->setMaxRecursionDepth(50); $parser = ParserFactory::create('/path/to/entry.php', [], $config);
PSR-4 Loader usage
use PhpPacker\Parser\Psr4Loader; $loader = new Psr4Loader('/path/to/vendor'); $psr4Map = $loader->getPsr4Map(); $paths = $loader->findPossiblePaths('Namespace\\Class');
Documentation
- Advanced configuration: logging, recursion depth, AST cache and more
- See source code and unit tests for detailed API usage
Contributing
Pull requests and issues are welcome! Please follow PSR-12 coding standards and ensure all PHPUnit tests pass before submitting.
License
MIT License © tourze