1

特定の Forrest ユーザーのフォロワー数を返す WordPress プラグインに取り組んでいます。

API サーバーとの通信でエラーが発生した場合、またはその他の問題が発生した場合に、関数が適切に 0 を返すようにしたいと考えています。

関数は次のとおりです。

/**
 * Get Forrst followers.
 *
 * @param string $forrstID The username of the Forrst member
 * @return int. Number of Forrst Followers
 */
function ass_get_forrst($forrstID) {
    $json = wp_remote_get("http://forrst.com/api/v2/users/info?username=".$forrstID);

    if(is_wp_error($json))
        return false;

    $forrstData = json_decode($json['body'], true);

    return intval($forrstData['resp']['followers']);
} 

エラーが発生した場合に false を返す関数にブロックがありますが、「致命的なエラー」が発生することがあるため、このセクションをスキップする必要があるようです IE 最大実行時間を超えました。

エラーが発生した場合に「0」を返すようにこの関数を書き直すより良い方法はありますか? たぶん、Try/Catch ブロックですか?

if(is_wp_error($json)) return false;関数の間違ったセクションに がありますか?

4

2 に答える 2

1

シャットダウン機能を登録します。

function returnzero() {
        $error = error_get_last();
        if($error &&  ['type'] == E_ERROR){
            echo 0;
        }
    }
register_shutdown_function('returnzero');

次のようなものを使用して、このページのエラー報告をオフにすることができることに注意してください。

error_reporting(E_ALL & ~ E_ERROR);
于 2012-11-22T19:43:35.397 に答える
1

wordpress モデルについてはわかりませんが、使用している 2 つの関数のうちの 1 つが例外をスローしているようです。この場合、Try/Catch ブロックのみがスムーズにセロを返すことができます。

チェックしているif(is_wp_error($json))のは(私が推測する)、以前にワードプレスによって検出された「知っている」一連のエラーです。

「一般的な」try/catch ブロックで機能します。

function ass_get_forrst($forrstID) {
    try {
        $json = wp_remote_get("http://forrst.com/api/v2/users/info?username=".$forrstID);

        if(is_wp_error($json))
            return false;

        $forrstData = json_decode($json['body'], true);

        return intval($forrstData['resp']['followers']);
    } catch (Exception $e) {
            return false;      // as above

    }
} 
于 2012-11-22T19:48:34.057 に答える