0

私は Twitter API 1.1 を使用して web アプリを作成しており、指定されたユーザーのプロフィール画像、実際の名前、および最新のツイートを取得する関数を正常に作成しました。すべて OAuth を使用してリクエストを認証します。

私の質問はこれです - 作成された 3 つの関数はすべて、Twitter ユーザー名が定義されることを期待しています。現時点では、入力した Twitter ユーザー名ごとにコードを何度も複製する必要があります。確かにそれを行うためのより良い方法はありますか? 現時点では、私のコードはまったく見栄えがよくありません。誰かが助けてくれれば、とても感謝しています。私はPHPにかなり慣れていないので、何をすべきか悩んでいます。

以下の私のコードを参照してください: 関数:

function getTweets($user, $tmhOAuth){
$usertweets = array();

$code = $tmhOAuth->request('GET', $tmhOAuth->url('1.1/statuses/user_timeline'), array(
  'include_entities'    => '1',
  'include_rts'         => '1',
  'screen_name'         => $user,
  'count'               => 1,
  'exclude_replies'     => 'true',
  'contributor_details' => 'true'
));


if ($code == 200) {
  $timeline = json_decode($tmhOAuth->response['response'], true); 
  foreach ($timeline as $tweet) :
    $entified_tweet = tmhUtilities::entify_with_options($tweet);
    $is_retweet = isset($tweet['retweeted_status']);

    $diff = time() - strtotime($tweet['created_at']);
    if ($diff < 60*60)
      $created_at = floor($diff/60) . ' minutes ago';
    elseif ($diff < 60*60*24)
      $created_at = floor($diff/(60*60)) . ' hours ago';
    else
      $created_at = date('d M', strtotime($tweet['created_at']));

    $permalink  = str_replace(
      array(
        '%screen_name%',
        '%id%',
        '%created_at%'
      ),
      array(
        $tweet['user']['screen_name'],
        $tweet['id_str'],
        $created_at,
      ),
      '<a href="https://twitter.com/%screen_name%/%id%">%created_at%</a>'
    );
     $tweet['created_at'] = $created_at;
     $usertweets[] = $tweet;
   endforeach;
   } else {
       tmhUtilities::pr($tmhOAuth->response);
}
    return $usertweets;
}

function getImage($screen_name,$tmhOAuth,$size = ''){
$url = $tmhOAuth->request('GET', $tmhOAuth->url('1.1/users/show'), array(
  'screen_name' => $screen_name,
));

$results = json_decode($tmhOAuth->response['response'], true);

//Get the user's profile image
$profileImg = ($results['profile_image_url']);
return str_replace('_normal', $size, $profileImg);
}

function getName($screen_name,$tmhOAuth){
$url = $tmhOAuth->request('GET', $tmhOAuth->url('1.1/users/show'), array(
  'screen_name' => $screen_name,
));

$results = json_decode($tmhOAuth->response['response'], true);

//Get the user's name
$name = ($results['name']);
return $name;
}

関数の実装方法:

$name2 = getName("JoeyEssex_",$tmhOAuth);
$user2 = getTweets("JoeyEssex_",$tmhOAuth);
$image2 = getImage("JoeyEssex_",$tmhOAuth);

$name3 = getName("piersmorgan",$tmhOAuth);
$user3 = getTweets("piersmorgan",$tmhOAuth);
$image3 = getImage("piersmorgan",$tmhOAuth);

$name4 = getName("BinkyFelstead",$tmhOAuth);
$user4 = getTweets("BinkyFelstead",$tmhOAuth);
$image4 = getImage("BinkyFelstead",$tmhOAuth);

//Display the profile images of specified users

echo '<img src="' . $image2 . '" width="240px" height="240px" />';
echo '<img src="' . $image3 . '" width="240px" height="240px" />';
echo '<img src="' . $image4 . '" width="240px" height="240px" />';

//Display user's name
echo '<p>Latest tweet from <b>' . $name1 . '</b>:<br />';
//Display their tweets
foreach($user1 as $tweet){ 
echo $tweet['text'] . '<br />';
echo "Sent: <b>" . $tweet['created_at'] . "</b></p>";
}

echo '<b>' . $name2 . '</b>&nbsp;';
foreach($user2 as $tweet){
echo $tweet['text'];
echo "&nbsp;" . $tweet['created_at'] . "<br />";
}

echo '<b>' . $name3 . '</b>&nbsp;';
foreach($user3 as $tweet){
echo $tweet['text'];
echo "&nbsp;" . $tweet['created_at'] . "<br />";
}

echo '<b>' . $name4 . '</b>&nbsp;';
foreach($user4 as $tweet){
echo $tweet['text'];
echo "&nbsp;" . $tweet['created_at'] . "<br />";
}

恐ろしい繰り返しが見えますか?もっといい方法があるに違いない!

4

1 に答える 1