voku / simple-php-code-parser
从您的PHP代码中获取简单数据结构。
0.20.1
2023-08-13 00:28 UTC
Requires
- php: >=7.4
- nikic/php-parser: ~4.16
- phpdocumentor/reflection-common: ~2.2
- phpdocumentor/reflection-docblock: ~5.3
- phpdocumentor/type-resolver: ~1.7.2
- phpstan/phpdoc-parser: ~1.23
- react/async: ~3.0.0 || ~4.1.0
- react/filesystem: ^0.2@dev
- voku/simple-cache: ~4.1
Requires (Dev)
- phpunit/phpunit: ~6.0 || ~7.0 || ~9.0
- dev-master
- 0.20.1
- 0.20.0
- 0.19.6
- 0.19.5
- 0.19.4
- 0.19.3
- 0.19.2
- 0.19.1
- 0.19.0
- 0.18.2
- 0.18.0
- 0.17.0
- 0.16.6
- 0.16.5
- 0.16.4
- 0.16.3
- 0.16.2
- 0.16.1
- 0.16.0
- 0.15.3
- 0.15.2
- 0.15.1
- 0.15.0
- 0.14.0
- 0.13.2
- 0.13.1
- 0.13.0
- 0.12.0
- 0.11.0
- 0.10.0
- 0.9.0
- 0.8.0
- 0.7.0
- 0.6.0
- 0.5.0
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.0
- 0.2.1
- 0.2.0
- 0.1.0
- dev-renovate/shivammathur-setup-php-2.x
- dev-renovate/actions-checkout-digest
- dev-renovate/react-async-4.x
- dev-renovate/actions-cache-4.x
- dev-renovate/major-github-artifact-actions
- dev-renovate/phpunit-phpunit-11.x
- dev-renovate/codecov-codecov-action-4.x
- dev-renovate/actions-cache-3.x
- dev-renovate/phpdocumentor-type-resolver-1.x
- dev-renovate/nikic-php-parser-5.x
- dev-analysis-dj2339
- dev-analysis-O3BxNL
- dev-analysis-YO03Ro
- dev-analysis-vZMo3r
- dev-analysis-PG5Ew9
- dev-analysis-marjMb
- dev-analysis-M1QJ1K
- dev-analysis-L37kEk
- dev-whitesource/configure
- dev-analysis-1boDOw
- dev-analysis-QMj9Yp
- dev-analysis-QM2ejO
- dev-analysis-QMpwV3
- dev-analysis-ajJopY
- dev-analysis-OMrl1l
This package is auto-updated.
Last update: 2024-09-09 16:56:38 UTC
README
❤ Simple PHP Code Parser
您可以简单地扫描字符串、文件或整个目录,并从您的PHP代码中看到简单数据结构。
- 类 (PHPClass)
- 属性 (PHPProperties)
- 常量 (PHPConst)
- 方法 (PHPMethod)
- 接口 (PHPInterface)
- 特质 (PHPTrait)
- 函数 (PHPFunction)
- 参数 (PHPParameter)
此代码是从 JetBrains/phpstorm-stubs 分支的,但不能直接使用 "phpstorm-stubs" 中的类,因为它们在测试命名空间中,并且自动加载器是 "autoload-dev",因此这里是一个扩展版本。
我们将使用
通过 "composer require" 安装
composer require voku/simple-php-code-parser
快速开始
解析字符串
$code = ' <?php namespace voku\tests; class SimpleClass {} $obja = new class() {}; $objb = new class {}; class AnotherClass {} '; $phpCode = \voku\SimplePhpParser\Parsers\PhpCodeParser::getFromString($code); $phpClasses = $phpCode->getClasses(); var_dump($phpClasses['voku\tests\SimpleClass']); // "PHPClass"-object
解析一个类
$phpCode = \voku\SimplePhpParser\Parsers\PhpCodeParser::getFromClassName(Dummy::class); $phpClasses = $phpCode->getClasses(); var_dump($phpClasses[Dummy::class]); // "PHPClass"-object var_dump($phpClasses[Dummy::class]->methods); // "PHPMethod[]"-objects var_dump($phpClasses[Dummy::class]->methods['withoutPhpDocParam']); // "PHPMethod"-object var_dump($phpClasses[Dummy::class]->methods['withoutPhpDocParam']->parameters); // "PHPParameter[]"-objects var_dump($phpClasses[Dummy::class]->methods['withoutPhpDocParam']->parameters['useRandInt']); // "PHPParameter"-object var_dump($phpClasses[Dummy::class]->methods['withoutPhpDocParam']->parameters['useRandInt']->type); // "bool"
解析一个文件
$phpCode = \voku\SimplePhpParser\Parsers\PhpCodeParser::getPhpFiles(__DIR__ . '/Dummy.php'); $phpClasses = $phpCode->getClasses(); var_dump($phpClasses[Dummy::class]); // "PHPClass"-object var_dump($phpClasses[Dummy::class]->methods); // "PHPMethod[]"-objects var_dump($phpClasses[Dummy::class]->methods['withoutPhpDocParam']); // "PHPMethod"-object var_dump($phpClasses[Dummy::class]->methods['withoutPhpDocParam']->parameters); // "PHPParameter[]"-objects var_dump($phpClasses[Dummy::class]->methods['withoutPhpDocParam']->parameters['useRandInt']); // "PHPParameter"-object var_dump($phpClasses[Dummy::class]->methods['withoutPhpDocParam']->parameters['useRandInt']->type); // "bool"
解析多个文件
$phpCode = \voku\SimplePhpParser\Parsers\PhpCodeParser::getPhpFiles(__DIR__ . '/src'); $phpClasses = $phpCode->getClasses(); var_dump($phpClasses[Dummy::class]); // "PHPClass"-object
支持
有关支持和捐赠,请访问 Github | 问题 | PayPal | Patreon。
有关状态更新和发布公告,请访问 发布 | Twitter | Patreon。
有关专业支持,请联系 我。