2016-07-19 4 views
1

Google Reseller APIの使い方に関するチュートリアルに従っています。私は顧客がGoogle Appsに既に存在しているかどうか(手順2)を確認するセクションに来て、Google_Service_Exceptionオブジェクトの処理に邪魔されて来ました。Google_Service_Exceptionのプロパティにアクセスする際の問題

顧客が存在しない場合、APIの呼び出しによって404エラーが返されます。私はGoogle_Service_Exceptionオブジェクト$ecodeプロパティを使用して、応答に404エラーがあるかどうかを判断しています。私は$e->codeとエラーコードを返すようにしようとすると、しかし:

try { 
// Call to the Google Reseller API 
} catch (Google_Service_Exception $e) { 
    if($e->code == 404){ 
    return false; 
    } 
} 

私は、次のPHPのエラーを取得:

Fatal error: Cannot access protected property Google_Service_Exception::$code.

次のようにGoogle_Service_Exceptionクラスは次のとおりです。

<?php 

require_once 'Google/Exception.php'; 

class Google_Service_Exception extends Google_Exception 
{ 
    /** 
    * Optional list of errors returned in a JSON body of an HTTP error response. 
    */ 
    protected $errors = array(); 

    /** 
    * Override default constructor to add ability to set $errors. 
    * 
    * @param string $message 
    * @param int $code 
    * @param Exception|null $previous 
    * @param [{string, string}] errors List of errors returned in an HTTP 
    * response. Defaults to []. 
    */ 
    public function __construct(
     $message, 
     $code = 0, 
     Exception $previous = null, 
     $errors = array() 
) { 
    if (version_compare(PHP_VERSION, '5.3.0') >= 0) { 
     parent::__construct($message, $code, $previous); 
    } else { 
     parent::__construct($message, $code); 
    } 

    $this->errors = $errors; 
    } 

    /** 
    * An example of the possible errors returned. 
    * 
    * { 
    * "domain": "global", 
    * "reason": "authError", 
    * "message": "Invalid Credentials", 
    * "locationType": "header", 
    * "location": "Authorization", 
    * } 
    * 
    * @return [{string, string}] List of errors return in an HTTP response or []. 
    */ 
    public function getErrors() 
    { 
    return $this->errors; 
    } 
} 

だから私エラーは$errorsが保護されているという事実と関係があると仮定しています。私はそれが理由で保護されていると思いますので、私はクラスを変更することに少し注意しました。このエラーを回避するための助けと指導をいただければ幸いです。

try { 
    // Call to the Google Reseller API 
} catch (Google_Service_Exception $e) { 
    if($e->getCode() == 404){ // <- Change is here 
     return false; 
    } 
} 

Google_Service_ExceptionGoogle_Exceptionを拡張し、Google_ExceptionExceptionを拡張:ありがとう

答えて

0

ちょうどgetCode()メソッドを使用します。ここでdocumentation about Exceptionを読むことができます。 getCodeメソッドが表示されます。

+0

素晴らしいです、ありがとうございます。思ったよりずっと簡単です – dbatten

関連する問題