ReflectionFunction是如何工作的?

时间:2013-08-17 22:51:37

标签: php reflection

我正在尝试使用以下函数来遍历已加载的文件并找到折旧函数。

//loads all files
include dirname(__FILE__) . '/loader.php'; 

$functions = get_defined_functions();

foreach ($functions['user'] as $func) {

    $rf = new ReflectionFunction('$func');
    var_dump($rf->isDeprecated());
}

某些函数具有如下标记,但它仍然返回false。事实上,每个函数都返回false但是有很多标记声明@deprecated

 **
 *
 * @since 0.71
 * @deprecated 1.5.1
 * @deprecated Use get_post()
 *
 * @param int $postid
 * @return array
 */

参考:http://www.php.net/manual/en/class.reflectionfunction.php

2 个答案:

答案 0 :(得分:1)

查看Reflection的源代码,它仅适用于设置了ZEND_ACC_DEPRECATED标志的内置函数,因此它不适用于userland方法或函数

答案 1 :(得分:1)

ReflectionFunction::isDeprecated不会检查文档评论;它只检查一个内部标志,该标志可以由PHP扩展在它们公开的函数上设置。

例如,hereereg扩展程序源代码的一部分,其中声明了其函数并将其标记为已弃用(DEP中的PHP_DEP_FE部分代表"弃用"。)