hhvm / systemlib-extractor
该软件包已被废弃,不再维护。未建议替代软件包。
提取 HHVM 中嵌入的 PHP、Hack 和 HNI 文件
v1.2
2018-02-08 23:24 UTC
Requires
- hhvm: *
Requires (Dev)
- 91carriage/phpunit-hhi: ~5.7
- phpunit/phpunit: ~5.7
This package is not auto-updated.
Last update: 2020-01-29 03:38:38 UTC
README
HHVM 的部分功能是用 Hack 实现的,并嵌入到 HHVM 二进制文件中作为额外的 ELF PROGDATA 部分。这个库可以从二进制文件中提取它们。
该库提取两种类型的部分
systemlib
:纯 Hack 代码ext
:内置扩展。这些是正常 Hack 代码和带有<<__Native>>
用户属性的函数的混合,这些函数在 C++ 运行时中实现
使用此库无法检查不同名称或不是 PROGDATA 的部分。
需求
此软件包需要 readelf
二进制文件;在类似 Debian 的系统上,它在 elfutils
软件包中。
安装
假设您的项目使用 Composer
composer require hhvm/systemlib-extractor
使用
hphpd> require('vendor/autoload.php')
require('vendor/autoload.php')
hphpd> $extractor = new HHVM\SystemlibExtractor\SystemlibExtractor()
$extractor = new HHVM\SystemlibExtractor\SystemlibExtractor()
hphpd> =$extractor->getSectionNames()
=$extractor->getSectionNames()
HH\Vector Object
(
[0] => "ext.6eedc03a68a6"
[1] => "ext.a0e7b2a56511"
[2] => "ext.7c82e855b041"
...
[119] => "ext.a6be8a33b7c9"
[120] => "systemlib"
)
hphpd> =$extractor->getSectionContents('systemlib')
=$extractor->getSectionContents('systemlib')
"<?hh\n// {@}generated\n\nnamespace {\n\n// default base\nclass stdClass {\n}\n\n// used in unserialize() for unknown classes\nclass __PHP_Incomplete_Class {\n public \$__PHP_Incomplete_Class_Name;\n
There are more characters. Continue? [y/N]n
n
hphpd>
构造函数接受两个可选参数
- HHVM 二进制文件的路径
- READELF 的路径
许可证
Systemlib-Extractor 采用 BSD 许可证。我们还提供额外的专利许可。
贡献
请参阅 CONTRIBUTING.md