私の Moodle プラグインには、次の PHP スクリプト test.php があります。
<?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 です。
前もって感謝します