0

LogMeInのRescueAPIを使用してクイックツールを構築しようとしています。基本的に私が望んでいるのは、面倒な管理パネルにログインしなくても、技術者を(モバイルデバイスからでも)すばやく有効または無効にできることです。

SOAPクエリに必要なシークレットパスワードを取得する方法を理解しましたが、データが戻ってきたときにデータを操作するのに問題があります。ミニアプリの最初のステップは、ユーザーの現在のステータスを確認することです。そのため、2人のユーザー(またはノードが呼び出すノード)のAPIURLに対してSOAPクライアントリクエストを実行するダーティクイックテストがあります。私が抱えている問題は、データが戻ってきたときのデータの形式にあります。

SOAPリクエストのコードは次のとおりです。

$authCode = $_SESSION['authCode'];
$user1_status = "";
$user2_status = "";
$soapclient = new SoapClient("https://secure.logmeinrescue.com/api/api.asmx?wsdl");
$iNodeID = $user1; //The value of user1 is defined previous to this bit of code 

$getuserparams = array (
'iNodeID' => $iNodeID,
'sAuthCode' => $authCode
);

$getUserResult = $soapclient->getUser($getuserparams);

.
.
.
//SOAP request for the other user, same stuff

ここで、SOAPクライアントがデータを受信した後に追加するとvar_export($getUserResult);、次のようになります。

stdClass :: __ set_state(array('getUserResult' =>'getUser_OK'、'oUser' => stdClass :: __ set_state(array('iNodeID' => 11028674、'sName' =>'技術名'、'sNick' => '技術名'、'sEmail' =>'tech.name@email.co.uk'、'sSSOID' =>'tech.name@email.co.uk'、'sDescription' =>''、'eType' =>'技術者'、'bAccountHolder' => false、'hasMobileAddon' => false、'eStatus' =>'オフライン'、))、))

私は実際には技術者の名前と彼のステータスにのみ興味があり、全員のステータスを含むクイックテーブルまたはリストを作成します。var_exportデータのため、SOAPクライアントから返されるものは配列であると思われます(私は想定することしかできません)。したがって、次のようにしてアクセスしようとすると、次のようになります。

$status = var_export($getUserResult["eStatus"], true);
echo $status;

私は次のようになります:

致命的なエラー:53行目のC:\ wamp \ www \ rescue\admin.phpの配列としてstdClass型のオブジェクトを使用できません

私は周りを検索して、同じことについて話しているたくさんの投稿をここで見つけました、しかし私は純粋なPHPに言及しているものを見つけることができませんでした、ほとんどのものはWordPressのようなCMSに関するものでした。

このデータを適切に必要とするために、このデータをどのように読み取るか、または配列に「作成」する必要があるかについて、いくつかの光を当てていただけますか?

現在、テーブル内の名前をハードコーディングし、substrとstr_replaceを使用してテキストを切り取ってステータスを文字列として取得することにより、非常に醜いソリューションを使用しています。

将来的には、レポートなどの他の機能を追加したいと思います。このデータを正しく読み取る方法がわからない場合は、すべてがウィンドウの外に出てしまうのではないかと心配しています。

あなたが私に与えることができるどんな助けにも感謝します、私はこれについて気が狂います。

4

2 に答える 2

2

配列ではなくオブジェクトが返されるため、オブジェクト表記を使用してプロパティにアクセスしてみてください。

echo $getUserResult->oUser->sName;

これは、オブジェクト自体の単純な内訳ではなく、オブジェクトの再作成に必要なコードを表示するvar_dumpの代わりに使用した場合に、より明確になった可能性があります。var_export

于 2012-12-21T17:08:15.987 に答える
0

あなたが持って$getUserResultいるのはstdClassオブジェクトです。これ__set_state()は、オブジェクトに現在設定されているプロパティが何であるかを示しています。この場合、関心のある情報は、実際にstdClassはプロパティに設定された別のオブジェクトにありoUserます。

値にアクセスするには、次のことを行う必要があります。

$name = $getUserResult->oUser->sName;

$status = $getUserResult->oUser->eStatus;

etc.
于 2012-12-21T17:09:04.493 に答える