отражение — ReflectionMethod-> getDocComment (), похоже, не работает на PHP 5.5

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

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

0

Решение

Хорошо, похоже 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) удаляются, поэтому не читаются.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]