2017-02-07 1 views
0

Я пытаюсь создать интерфейс из методов reflectionMethods для одного из моих классов, и у меня есть проблема, когда метод getDocComments() не работает на моем промежуточная среда.ReflectionMethod-> getDocComment(), похоже, не работает на PHP 5.5

Вот тестовый код я использую:

<?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() его). Версия PHP, которую я имею в промежуточной среде, - PHP Version 5.5.30-1~dotdeb+7.1. В моей локальной среде, с PHP Version 5.6.27-0+deb8u1, он работает.

Проблема может быть очень специфичной для моей среды, хотя я не могу воспроизвести ее на любом онлайн-тесте php, который я нашел (я тестировал его с помощью PHPTester и Online PHP Functions, которые позволяют протестировать несколько версий PHP, но ни один из них не был точная версия у меня на моем окружении

ответ

1

Ok, кажется, 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) являются удалены, поэтому не читаются.

Смежные вопросы