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.

Другие вопросы по тегам