当在类中使用httpful时,Try/catch在Moodle/PHP中被忽略



我的Moodle插件中有以下PHP脚本test.php:

<?php
include('lib/httpful/httpful.phar');
    try{
        $response = HttpfulRequest::post($uri)                 
            ->body($requestbody)             
            ->send();       
    }catch (Exception $e) {
        echo "Exception occurred";
    }
?>

每当出现异常时,文本"exception Occurred"将按预期显示。然后,我将代码移动到类classeshttp_client.php中的一个函数中。因此:

class http_client{
  public function doPost($uri, $requestbody){
    try{
        $response = HttpfulRequest::post($uri)                 
            ->body($requestbody)             
            ->send();       
    }catch (Exception $e) {
        echo "Exception occurred";
    }
  }
}

现在我尝试调用from test.php:

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

不再捕获异常,并在浏览器中显示堆栈跟踪。

我必须提到它只发生在Moodle中。在Moodle外部,类http_client工作正常,catch块被执行。

我的设置是:Moodle 3.0.1+ (Build: 20151223), PHP 5.5.12, Apache 2.4.9

Thanks in advance

我在这个Moodle论坛上找到了解决方案。https://moodle.org/mod/forum/discuss.php?d=207445。由于类http_client位于名称空间内(我愚蠢地省略了这一事实),因此我必须转义Exception。

:

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

相关内容

  • 没有找到相关文章