Неверная работа isError() в PHP 5.4
В последнее время появилось много жалоб на странные глюки в компоненте Tickets. Вот тут не редактируется тикет, а вот тут — не выводятся секции и комментарии.
Оказывается, всему виной функция isError() в классе modX::modProcessorResponse
Она нужна для того, чтобы знать — были ошибки при работе процессора, или нет? Так вот, при прочих равных условиях она возвращает false в php 5.3 и true в php 5.4.
Проверить просто:
То есть, функция empty() ведёт себя иначе в новой версии php, о чём честно написано в документации.
Создал тему на официальном форуме и зарепортил багу на трекер.
Похоже, эта ошибка касается только getList процессоров, которые возвращают json строку и ничего не пишут в «success». То есть, проблема даже не в функции, а в неоднородности формата ответа от разных процессоров.
В ближайшее время изменю проверки в Tickets и выпущу новую версию.
Оказывается, всему виной функция isError() в классе modX::modProcessorResponse
public function isError() {
return empty($this->response) || empty($this->response['success']);
}
Она нужна для того, чтобы знать — были ошибки при работе процессора, или нет? Так вот, при прочих равных условиях она возвращает false в php 5.3 и true в php 5.4.
Проверить просто:
$response = $modx->runProcessor('resource/getlist');
var_dump($response->isError()); // 5.3 - false, 5.4 - true
var_dump(empty($response->response)); // 5.3 - false, 5.4 - false
var_dump(empty($response->response['success'])); // 5.3 - false, 5.4 - true
var_dump($response->response['success']); // 5.3 - false, 5.4 - true + Warning Illegal string offset 'success'
То есть, функция empty() ведёт себя иначе в новой версии php, о чём честно написано в документации.
Создал тему на официальном форуме и зарепортил багу на трекер.
Похоже, эта ошибка касается только getList процессоров, которые возвращают json строку и ничего не пишут в «success». То есть, проблема даже не в функции, а в неоднородности формата ответа от разных процессоров.
В ближайшее время изменю проверки в Tickets и выпущу новую версию.
Комментарии: 1
Оперативно :) Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.