php中,反射相关的类都有哪些?可用的反射工具类大全
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
最近的php
相关文章,大多数都涉及到了php
的反射功能。苏南大叔是这么看待反射功能的:可以黑盒分析一些已有的函数或者类(及其它)。当然,你也可以通过查看文档来获得相关的知识。但是,如果目标函数没有使用文档呢?或者存在于第三方的加密扩展里面呢?是不是就抓瞎了?这种情况下,反射功能也许就是一个可用的稻草。
苏南大叔的"程序如此灵动"技术博客,记录苏南大叔的代码编程感想感悟。本文测试环境:win10
,nginx@1.15.11
,php@8.2.10-nts
。
可用的反射相关类
根据苏南大叔的代码测算,这些反射相关类有下面这些:
当然还有其它一些具有反射的类似功能,但是没有反射相关的名字的函数。比如:
函数名 | 官方文档 |
---|---|
get_class() | https://www.php.net/manual/zh/function.get-class |
get_class_methods() | https://www.php.net/manual/zh/function.get-class-methods |
get_class_vars() | https://www.php.net/manual/zh/function.get-class-vars |
get_object_vars() | https://www.php.net/manual/zh/function.get-object-vars |
在这里就不一一列举了。
如何获得反射相关列表
其实本文主要的目的是展示一下下面这段代码,通过代码显示获得目标类的思路。
$class_all = get_declared_classes();
$result = [];
foreach($class_all as $c){
if( strpos(needle:"Reflection",haystack:$c)===0 ){
$result[] = $c;
}
}
print_r($result);
当然,使用了php8
新特性写的上述代码【故意的做练习而已】,不能运行的话,请更换php版本或者改写代码。
输出如下:
Array
(
[0] => ReflectionException
[1] => Reflection
[2] => ReflectionFunctionAbstract
[3] => ReflectionFunction
[4] => ReflectionGenerator
[5] => ReflectionParameter
[6] => ReflectionType
[7] => ReflectionNamedType
[8] => ReflectionUnionType
[9] => ReflectionIntersectionType
[10] => ReflectionMethod
[11] => ReflectionClass
[12] => ReflectionObject
[13] => ReflectionProperty
[14] => ReflectionClassConstant
[15] => ReflectionExtension
[16] => ReflectionZendExtension
[17] => ReflectionReference
[18] => ReflectionAttribute
[19] => ReflectionEnum
[20] => ReflectionEnumUnitCase
[21] => ReflectionEnumBackedCase
[22] => ReflectionFiber
)
相关文章
- https://newsn.net/say/php-reflect-class.html
- https://newsn.net/say/php-reflect-function.html
- https://newsn.net/say/php-trace-plus.html
- https://newsn.net/say/php-debug-var.html
- https://newsn.net/say/php-debug-func.html
结束语
php
作为世界上最好的语言,其实挺博大精深的。更多苏南大叔的php
相关文章,请参考:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。