обработка исключений — Try / catch игнорируется в Moodle / PHP при использовании httpful внутри класса

У меня есть следующий PHP-скрипт test.php в моем плагине Moodle:

<?php
include('lib/httpful/httpful.phar');

try{
$response = \Httpful\Request::post($uri)
->body($requestbody)
->send();
}catch (Exception $e) {
echo "Exception occurred";
}
?>

Всякий раз, когда возникает исключение, текст «Возникло исключение» отображается, как и ожидалось.
Затем я переместил код в функцию в классе classes \ http_client.php. Таким образом:

class http_client{
public function doPost($uri, $requestbody){

try{
$response = \Httpful\Request::post($uri)
->body($requestbody)
->send();
}catch (Exception $e) {
echo "Exception occurred";
}
}
}

Теперь я пытаюсь вызвать из test.php:

$client = new http_client();
$client->doPost($uri, $requestbody);

Исключения больше не перехватываются, а трассировка стека отображается в браузере.

Я должен упомянуть, что это происходит только в Moodle. Вне Moodle класс http_client работает нормально, блок catch выполняется.

Мои настройки: Moodle 3.0.1+ (сборка: 20151223), PHP 5.5.12, Apache 2.4.9.

заранее спасибо

1

Решение

Я нашел решение на этом форуме Moodle. https://moodle.org/mod/forum/discuss.php?d=207445. Так как класс http_client находился в пространстве имен (факт, который я глупо пропустил), мне пришлось избежать исключения.

Таким образом:

}catch (\Exception $e) {
echo "Exception occurred";
}

\ Exception $ e вместо Exception $ e.

1

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

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

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