bramus / reflection
更好的PHP反射库
1.0
2019-05-13 06:47 UTC
Requires
- php: ^7.2
- phpdocumentor/reflection-docblock: ~4.0
Requires (Dev)
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-08 04:31:43 UTC
README
bramus/reflection 是一个库,旨在使 PHP 的内置反射更好。
由 Bramus Van Damme (https://www.bram.us) 和 贡献者 构建
先决条件/需求
- PHP 7.2 或更高版本
安装
可以使用 Composer 进行安装
$ composer require bramus/reflection ~1.0
用法
注意
bramus/reflection 中的所有类都扩展了 PHP 的内置版本。因此,它们具有与父类相同的所有功能
\Bramus\Reflection\ReflectionClass扩展了 PHP 的内置ReflectionClass。\Bramus\Reflection\ReflectionClassConstant扩展了 PHP 的内置ReflectionClassConstant。
ReflectionClass
与 \ReflectionClass 相比,\Bramus\Reflection\ReflectionClass 工作方式完全相同,但它将在调用 getConstants() 时
- 返回一个包含
\Bramus\Reflection\ReflectionClassConstant实例的关联数组 (而不是简单值)。 - 在调用
getConstant()时返回一个\Bramus\Reflection\ReflectionClassConstant实例 (而不是简单值)。
以下是一个比较 getConstant() 的示例;
-
使用 PHP 的内置
ReflectionClassclass Weekday { /** * Monday */ const MONDAY = 1; /** * Tuesday */ const TUESDAY = … } $reflected = new \ReflectionClass(Weekday::class); $constant = $reflected->getConstant('MONDAY'); var_dump($constant); // int(1)
-
使用
\Bramus\Reflection\ReflectionClassclass Weekday { /** * Monday */ const MONDAY = 1; /** * Tuesday */ const TUESDAY = … } $reflected = new \Bramus\Reflection\ReflectionClass(Weekday::class); $constants = $reflected->getConstant('MONDAY'); var_dump($constant); // object(Bramus\Reflection\ReflectionClassConstant)#40 (2) { // ["name"]=> // string(6) "MONDAY" // ["class"]=> // string(7) "Weekday" // ["docComment":"Bramus\Reflection\ReflectionClassConstant":private]=> // object(phpDocumentor\Reflection\DocBlock)#86 (7) { // … // } // }
ReflectionClassConstant
与 \ReflectionClassConstant 相比,\Bramus\Reflection\ReflectionClassConstant 工作方式完全相同,但它将在调用 getDocComment() 时
- 返回一个
\phpDocumentor\Reflection\DocBlock实例 (而不是字符串)。 - 在需要以
\ReflectionClassConstant::getDocComment()返回的内容进行访问时,提供了一个getDocCommentString()方法。 - 在
\Bramus\Reflection\ReflectionClassConstant实例上提供了一个getSummary()简写。 - 在
\Bramus\Reflection\ReflectionClassConstant实例上提供了一个getDescription()简写。
其他反射类
尚未提供其他反射类。将来可能会提供。
测试
bramus/reflection 配套使用 PHPUnit ~8.0 的单元测试。
- 如果已全局安装 PHPUnit,请运行
phpunit以运行测试。 - 如果没有全局安装 PHPUnit,请通过运行
composer install --dev在本地通过 Composer 安装它。通过调用./vendor/bin/phpunit或使用 composer 脚本composer test运行测试。
$ composer test
许可证
bramus/reflection 在 MIT 公共许可证下发布。有关详细信息,请参阅附带的 LICENSE 文件。