PHP:反射API - 很少使用PHP的好添加

Sar*_*raz 9 php oop documentation

Reflection API是操作OOP内容的好东西,看起来大多数开发人员甚至都不知道或从未使用过.

反思API声明:

PHP 5附带了一个完整的反射API,它增加了对类,接口,函数,方法和扩展进行反向工程的能力.此外,反射API提供了检索函数,类和方法的文档注释的方法.

题:

  • 为什么它的大多数方法/属性几乎没有文档?您在文档中看到此消息:

目前没有记录此功能; 只有它的参数列表可用.

哪里可以找到它的文档?

  • 它是未来兼容的,换句话说,我可以在我的MVC框架中使用吗?
  • 为什么不经常使用它,有什么问题呢?

Gor*_*don 16

绝对是反思.您可以使用它,但请记住,对于简单的UseCases,它被认为是缓慢且过度的.使用Classes/Objects函数包中的一个函数通常是更快的替代方法.

Reflection派上用场的UseCase是在解析类的DocBlock中的注释时.例如,PHPUnit使用注释@test告诉PHPUnit TestRunner它应该将方法视为测试.@covers注释将帮助它收集代码覆盖率数据.FLOW3框架为其AOP框架使用Annotations.

不幸的是,PHP> 5.3的一些新增内容还没有那么多.看看SPL吧.一样.这并不意味着你不能使用它.Reflection API非常具有表现力,很容易从方法名称中找出.谷歌经常有关于如何使用某些扩展的博客文章.对于Reflection API,请查看:

对于SPL


我刚刚发现的一些很酷的东西.从5.1.2开始,您也可以从命令行调用Reflection API:

$php --rf strtotime
Function [ <internal:date> function strtotime ] {

  - Parameters [2] {
    Parameter #0 [ <required> $time ]
    Parameter #1 [ <optional> $now ]
  }
}
Run Code Online (Sandbox Code Playgroud)

  • @IanBytchek实际上,一只猴子会在C击败我,所以我恐怕没有答案.但是你可以加入PHP室,那里有很多知识渊博的人,他们可以回答你的问题. (2认同)