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

时间:2010-03-04 07:17:39

标签: php oop documentation

Reflection API是操作OOP的好东西,看起来大多数开发人员甚至都没有意识到这一点,或者从未使用过。

反思API声明:

  

PHP 5带有完整的反映   添加能力的API   逆向工程类,接口,   功能,方法和扩展。   另外,反射API   提供检索文档评论的方法   对于函数,类和方法。

问题:

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

此功能目前不是   记录;只有它的参数列表是   可用。

在哪里可以找到它的文档?

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

1 个答案:

答案 0 :(得分:15)

反思绝对是留下来的。您可以使用它,但请记住,对于简单的UseCases,它被认为是缓慢且过度的。使用Classes/Objects function package中的一个功能通常是更快的选择。

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

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

和SPL


我最近发现的一些很酷的东西。从5.1.2开始,您也可以invoke the Reflection API from the command line

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

  - Parameters [2] {
    Parameter #0 [ <required> $time ]
    Parameter #1 [ <optional> $now ]
  }
}