Afinogen
@Afinogen
PHP разработчик

Как объяснить поведение php констант класса при включенном opcache?

Есть контроллер ZF2 (версия PHP 5.6.11-1ubuntu3.4 ) и в нем константа FILE_EXTENSION_REPORT
class IndexController extends AbstractController
{
    const FILE_EXTENSION_REPORT = [
        'xls',
        'xlsx',
        'csv',
    ];
}

В одном публичном методе есть вывод этой константы
print_r(self::FILE_EXTENSION_REPORT);
print_r(self::FILE_EXTENSION_REPORT);
print_r(self::FILE_EXTENSION_REPORT);
$data = [
      'fileReportExtenstions' => self::FILE_EXTENSION_REPORT,
];
$this->_getJSON()->setVariable('data', $data);

return $this->_getJSON();

После 2-ого обновления страницы, выводит следующее
Array
(
    [0] => csv
)
Array
(
    [0] => xls
    [1] => xlsx
    [2] => csv
)
Array
(
    [0] => xls
    [1] => xlsx
    [2] => csv
)

Хотя при первом обновлении все корректно. Ошибка появляется только при включенном opcache. Так же, если поставить exit после print_r, то данные так же корректно выводятся.
Если ключи массива заменить на строковые (но не числового значения), то данные выводятся корректно.
Что это за магия и как ее лечить?
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы