2

我正在尝试使用以下函数循环加载文件并查找折旧函数。

//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());
}

有些函数有如下标记,但它仍然是 return 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

4

2 回答 2

1

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

于 2013-08-17T22:59:16.343 回答
1

ReflectionFunction::isDeprecated不检查文档注释;它只检查可以由 PHP 扩展在它们公开的函数上设置的内部标志。

例如,这里ereg扩展源的一部分,它的函数被声明并标记为已弃用(其中的DEP部分PHP_DEP_FE代表“已弃用”)。

于 2013-08-17T22:59:27.753 回答