I'm trying to make an interface from reflectionMethods for one of my classes, and I've got a problem where the method getDocComments() fails on my staging environment.
Here is the test code I use :
<?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;
On my staging environment, $docBlock is empty (set to false if I var_dump() it).
The PHP Version I have on the staging environment is PHP Version 5.5.30-1~dotdeb+7.1
.
On my local environment, with PHP Version 5.6.27-0+deb8u1
, it seems to work.
The issue may be very specific to my environment though, I am not able to reproduce it on any online php tester I found (I tested it with PHPTester and Online PHP Functions who allow to test against several versions of PHP, but none had the precise version I have on my environment.
Ok, it seems Zend OPcache was activated on this environment, with these parameters :
; 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
with opcache.save_comments
set to 0, all the comments (including docBlocks) are removed, therefore not readable.