我正在尝试为我的一个类创建一个来自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测试器上重现它(我使用PHPTester和Online PHP Functions测试了它,允许测试几个PHP的版本,但没有一个版本具有我环境中的精确版本。
答案 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),因此无法读取。