Nov.10, 2015 - 12h35m00s
  • TwitterOAuthで困ったこと

twitterの表示にあたっては…

有名どころだけど
TwitterOAuthって
ライブラリを使用しました。

abraham/twitteroauth · GitHub

tweetの取得までは
スムーズだったけど思わぬ箇所で
ハマったって話です。

今回の仕様は
TwitterIDを渡したらそのIDの
tweetを表示するって単純なもの。

そして、

IDが存在しなければ
エラーハンドリングで表示しない。

問題になったのは
IDが存在しない場合…

簡単だと思ってたら
あの手、この手を使っても
これですよ…


<?php
$con = new TwitterOAuth( $con_key, $con_secret, $acs_tok. . .
$re_tw = $con->get( 'statuses/user_timeline', array('screen_n. . .
?>
やっかいなのは
存在しない場合でも$re_twに
存在しない旨のobjectが
返ってきてしまう点。

var_dumpすると…

存在する時 =>
array(3){
[0]=> object(stdClass)#81 (23){
['created_at']=> string. . .

存在しない時 =>
object(stdClass)#81 (1){
['errors']=> array. . .

存在しない時は
もちろん処理を中止したいけど
$re_twに物が入ってる以上は
issetもemptyもis_nullも$re_tw == ' 'も
falseも返ってこなければtry/catchも効かない。

$iをカウンタにしてループ数で
判定しようにも最低1回転はしてしまう。

ならIDの入力を
間違わなければ良いかって
少し思ったけどシステム的にどうかしら?

…で、

ある時気がつくわけですよ。

存在する時 => array
存在しない時 => object

var_dumpした時に
気付けって話かもしれないけど、
レスポンスの型が異なるって
発想は全くありませんでした…

…めでたく、

<?php
if( gettype($re_tw)=='array' ){
    foreach($re_tweet as $key => $val){
        $loop_tw[] = array(
            〜 取得tweetを配列に格納 〜
        );
    }
}else{
    $err_msg = 'tweet not found. . .';
    〜 みたいな処理 〜
}
?>
…gettypeで
事なきを得た訳です。

is_arrayとかでも大丈夫そうです。

…ついでにナンバーズコレクション(2000)

図らずも踏んでしまった
2000人目の訪問者と共に
苦戦したtwitter表示欄をお楽しみ下さい。


オーバフローまで
後、99,998,000人。

達成日: 11.06, 2015