ReflectionMethod-> getDocComment()似乎不适用于PHP 5.5

时间:2017-02-07 10:28:54

标签: php reflection docblocks

我正在尝试为我的一个类创建一个来自reflectionMethods的接口,并且我遇到了一个问题,即getDocComments()方法在我的暂存环境中失败。

以下是我使用的测试代码:

<?php

class foo
{
    /**
     * Method bar description
     *
     * @param string $param1
     * @param int    $param2
     * @return array
     */
    public static function bar($param1, $param2 = 0)
    {
        return array();
    }
}

$r        = new ReflectionMethod('foo', 'bar');
$docBlock = $r->getDocComment();

echo $docBlock;

在我的暂存环境中,$ docBlock为空(如果我将var_dump()设置为false)。 我在暂存环境中使用的PHP版本是PHP Version 5.5.30-1~dotdeb+7.1。 在我的本地环境中,PHP Version 5.6.27-0+deb8u1似乎有效。

这个问题可能对我的环境非常具体,但是我无法在我找到的任何在线php测试器上重现它(我使用PHPTesterOnline PHP Functions测试了它,允许测试几个PHP的版本,但没有一个版本具有我环境中的精确版本。

1 个答案:

答案 0 :(得分:1)

好的,看来Zend OPcache在这个环境中被激活,带有以下参数:

; If disabled, all PHPDoc comments are dropped from the code to reduce the
; size of the optimized code.
opcache.save_comments=0

; If disabled, PHPDoc comments are not loaded from SHM, so "Doc Comments"
; may be always stored (save_comments=1), but not loaded by applications
; that don't need them anyway.
;opcache.load_comments=1

opcache.save_comments设置为0,删除所有注释(包括docBlocks),因此无法读取。