1

我正在尝试从反射方法为我的一个类创建一个接口,但我遇到了一个问题,即 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 测试仪上重现它(我使用PHPTester在线 PHP 函数对其进行了测试,它们允许针对多个版本的 PHP 进行测试,但没有一个具有精确的我在我的环境中拥有的版本。

4

1 回答 1

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)都被删除,因此不可读。

于 2017-02-07T10:28:54.303 回答