title: Notice: Trying to get property of non-object Twitter API
body: <p>I am using twitter API to get the tweets on website, sometimes it shows good and than suddenly its stop showing error.. </p>
  
  <p><strong>This error comes when its stops working:</strong></p>
  
  <pre><code>Notice: Trying to get property of non-object in public_html/wp-content/themes/sandra/TwitterModel.php on line 26
  </code></pre>
  
  <p>Here is my code:</p>
  
  <pre><code>require("TwitterModel.php");
  $tw = new TwitterModel();
  $t = $tw-&gt;getTweets("sandrasflower");
  echo "&lt;div&gt;";
  foreach($t['tweets'] as $date=&gt;$tweet) 
  {
     echo "&lt;div class='tweet'&gt;";
     echo $tweet . "&lt;br /&gt;" . date("jS F Y", strtotime($date));
     echo "&lt;/div&gt;";
  }
  </code></pre>
  
  <p>Please help me somebody...</p>
  
  <p>TwitterModel.php file code:</p>
  
  <pre><code>&lt;?php
  
      class TwitterModel {
  
          protected $token        = "1949108046-8jQwOMdqLSw86n2UZvFx0RlkquyKDEwndxdTMfN";
          protected $token_secret     = "PE1EIHRGpt8OHkk5Okc9HLUE2ilUL1UYP4u3GTDucOPCG";
          protected $consumer_key     = "9b7Ww9SM1AdeiVhOoYuenDsRS";
          protected $consumer_secret  = "nhAASYEa4epSribnb1kSPqtZVFMih4eXYJVWgm5W5VBTCnuOjC";
  
          protected $host             = 'api.twitter.com';
          protected $method           = 'GET';
          protected $path             = '/1.1/statuses/user_timeline.json'; // api call path
  
          # Get the last 5 tweets for this screen name
          public function getTweets($user) {
              $query = array( // query parameters
                  'screen_name' =&gt; $user,
                  'count' =&gt; '4'
              );
  
              $twitter_data = $this-&gt;request($query);
  
              $name = "";
              $tweets = array();
              foreach ($twitter_data as $value) {
                  $name = $value-&gt;user-&gt;name;
                  $tweetout = "";
                  $tweetout .= preg_replace("/(http:\/\/|(www\.))(([^\s&lt;]{4,68})[^\s&lt;]*)/", '&lt;a href="http://$2$3" target="_blank"&gt;$1$2$4&lt;/a&gt;', $value-&gt;text) . "&lt;br /&gt;";
                  $tweetout = preg_replace("/@(\w+)/", "&lt;a href=\"http://www.twitter.com/\\1\" target=\"_blank\"&gt;@\\1&lt;/a&gt;", $tweetout);
                  $tweetout = preg_replace("/#(\w+)/", "&lt;a href=\"http://twitter.com/search?q=\\1\" target=\"_blank\"&gt;#\\1&lt;/a&gt;", $tweetout);
                  $tweets[$value-&gt;created_at] = $tweetout;
              }
  
              if(is_array($tweets) &amp;&amp; !empty($tweets)) {
                  return array("name" =&gt; $value-&gt;user-&gt;name, "image" =&gt; $value-&gt;user-&gt;profile_image_url, "tweets" =&gt; $tweets);
              } else {
                  return false;
              }
          }
  
          public function request($query) {
              $oauth = array(
                  'oauth_consumer_key' =&gt; $this-&gt;consumer_key,
                  'oauth_token' =&gt; $this-&gt;token,
                  'oauth_nonce' =&gt; (string)mt_rand(), // a stronger nonce is recommended
                  'oauth_timestamp' =&gt; time(),
                  'oauth_signature_method' =&gt; 'HMAC-SHA1',
                  'oauth_version' =&gt; '1.0'
              );
  
              $oauth = array_map("rawurlencode", $oauth); // must be encoded before sorting
              $query = array_map("rawurlencode", $query);
  
              $arr = array_merge($oauth, $query); // combine the values THEN sort
  
              asort($arr); // secondary sort (value)
              ksort($arr); // primary sort (key)
  
              // http_build_query automatically encodes, but our parameters
              // are already encoded, and must be by this point, so we undo
              // the encoding step
              $querystring = urldecode(http_build_query($arr, '', '&amp;'));
  
              $this-&gt;url = "https://$this-&gt;host$this-&gt;path";
  
              // mash everything together for the text to hash
              $base_string = $this-&gt;method."&amp;".rawurlencode($this-&gt;url)."&amp;".rawurlencode($querystring);
  
              // same with the key
              $key = rawurlencode($this-&gt;consumer_secret)."&amp;".rawurlencode($this-&gt;token_secret);
  
              // generate the hash
              $signature = rawurlencode(base64_encode(hash_hmac('sha1', $base_string, $key, true)));
  
              // this time we're using a normal GET query, and we're only encoding the query params
              // (without the oauth params)
              $this-&gt;url .= "?".http_build_query($query);
              $this-&gt;url = str_replace("&amp;amp;","&amp;",$this-&gt;url); //Patch by @Frewuill
  
              $oauth['oauth_signature'] = $signature; // don't want to abandon all that work!
              ksort($oauth); // probably not necessary, but twitter's demo does it
  
              // also not necessary, but twitter's demo does this too
              function add_quotes($str) { return '"'.$str.'"'; }
              $oauth = array_map("add_quotes", $oauth);
  
              // this is the full value of the Authorization line
              $auth = "OAuth " . urldecode(http_build_query($oauth, '', ', '));
  
              // if you're doing post, you need to skip the GET building above
              // and instead supply query parameters to CURLOPT_POSTFIELDS
              $options = array( CURLOPT_HTTPHEADER =&gt; array("Authorization: $auth"),
                                //CURLOPT_POSTFIELDS =&gt; $postfields,
                                CURLOPT_HEADER =&gt; false,
                                CURLOPT_URL =&gt; $this-&gt;url,
                                CURLOPT_RETURNTRANSFER =&gt; true,
                                CURLOPT_SSL_VERIFYPEER =&gt; false);
  
              // do our business
              $feed = curl_init();
              curl_setopt_array($feed, $options);
              $json = curl_exec($feed);
              curl_close($feed);
  
              $twitter_data = json_decode($json);
              return $twitter_data;
          }
  
      }
  
  ?&gt;
  </code></pre>