0

私の拡張機能を使用してJoomla2.5から3.0に移行すると、DBエラー処理の実行方法に苦労しています(GetErrorNumは非推奨であるため、Joomla!も参照してください。JDatabase:: getErrorNum()は非推奨です。代わりに例外処理を使用してください)。

上にリンクされた質問によると思われる方法は、コードごとに次のコードを追加することdb->query()です。

if (!$db->query()) {
    throw new Exception($db->getErrorMsg());
}

私の意見では、これによりDBエラー処理が以前よりも厄介になります。これまでのところ、checkDBError()DB呼び出しの後に関数を呼び出すだけで、ErrorNumを照会し、それに応じて発生する可能性のあるエラーを処理していました。

これは、DBクエリが実際にトリガーされた方法とは無関係でした。これを行うにはさまざまな方法があり、エラーの場合はさまざまな結果が得られ$db->loadResult()ます。そのため、DBアクセスタイプごとに異なるチェックが行われます。null$db->query()false

これを処理する一般的な方法はありませんか?たとえば、DBの問題で例外をスローするようにJoomlaに指示する方法はありませんか?または、それを実現するためにDatabaseDriverの周りに独自のラッパーを作成する必要がありますか?それとも私は何か明らかなものを見逃しているのでしょうか?

または、今のところ非推奨の警告を無視して、getErrorNum()の使用を続行する必要がありますか?拡張機能を将来にわたって利用できるようにしたいのですが、厄介なエラー処理ロジックで拡張機能を乱雑にしたくありません。

4

2 に答える 2

2

このディスカッションが見つかりました:https ://groups.google.com/forum/#!msg / joomla-dev-general / O-Hp0L6UGcM / XuWLqu2vhzcJ

私が解釈すると、その非推奨の警告がありますが、とにかく適切な代替品はまだありません...

3.0でそれを行う方法について他の適切なドキュメントを誰かが指摘しない限り、私は何かを行うgetErrorNumメソッドを使い続けます...

于 2013-01-19T11:47:54.217 に答える
-1

getErrorNum()関数を取得すると、問題が解決します。

   $result = $db->loadResult();

    // Check for a database error.
    if ($db->getErrorNum())
    {
        JFactory::getApplication()->enqueueMessage($db->getErrorMsg());

        return false;
    }
于 2014-12-23T14:36:32.833 に答える