xPDO Getting Started guideの例に基づくと、$modx
このコンテキストではクラス拡張のように見えPDO
、結果のリソース オブジェクトはオブジェクト$myquery
である可能性がありPDOStatement
ます。
$modx
したがって、通常の PDO オブジェクトの場合と同様に、例外エラー モードをオンに設定できます。
$modx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
失敗時にエラーをスローするように強制します。デフォルトでは、PDO はサイレントにエラーを出します。そのエラー モードはここに記載されています。
訂正: xPDO ソースを見ると、拡張 されていませんが、プロパティとしてオブジェクトPDO
が含まれており、PDO
PDO メソッドを実装して、それらを接続プロパティに渡しています。したがって、setAttribute()
呼び出しは基になるPDO
オブジェクトに渡され、それに応じて機能するはずです。
xPDO コンストラクターは、通常の PDO コンストラクターから機能をわずかに拡張し、後でエラー モードを設定するのではなく、5 番目のパラメーターでオプションの配列を受け入れますsetAttribute()
。
$xpdo = new xPDO($dsn, $user, $password, [], [PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION]);
どの方法を選択して設定しても、コードをブロックでラップして、エラー時try/catch
にタイプの例外をキャッチできます。PDOException
try {
$insert = "some insert sql statement that will fail";
$myquery = $modx->query($insert);
}
catch (PDOException $e) {
echo 'error occurred! ' . $e->getMessage() . '<br>';
}
もっと単純に errormode を に設定することもできます。その場合PDO::ERRMODE_WARNING
、PHP は代わりにE_WARNING
メッセージを発行するだけで、例外とは異なり、致命的ではありません。
xPDO で簡単なテストをセットアップすることで、これらすべてが期待どおりに機能することを確認できました。