troubleshooting Question

PHP Twitter post Twitter API

Avatar of Jeff Darling
Jeff DarlingFlag for United States of America asked on
4 Comments1 Solution514 ViewsLast Modified:
I'm attempting to use PHP to post a tweet to twitter using this class:

$status = "Just Send This!";

It does not work.  I get this error:  

Fatal error: Call to a member function post() on a non-object in /home/polysync/public_html/activist/twitter/test/TwitterPoster.php on line 75

The source for TwitterPoster.php looks OK. I do not see the problem.

I removed the token info from this post.


# Define constants
define('TWITTER_USERNAME', 'x');
define('CONSUMER_KEY', 'x');
define('CONSUMER_SECRET', 'x');
define('ACCESS_TOKEN', 'x');
define('ACCESS_TOKEN_SECRET', 'x');
define('TWEET_LENGTH', 140);

class TwitterPoster {

    private static $library = 'TwitterOAuth';
    private static $twitter = NULL;
    private static $DBH = NULL;

     * connect: Create an object of the Twitter PHP API either TwitterOAuth
     * or twitter-api-php
     * @access private
    private static function connect() {

        if(self::$library == 'TwitterOAuth') {


            # Create the connection
            self::$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);

            # Migrate over to SSL/TLS
            self::$twitter->ssl_verifypeer = true;

        } else {


            self::$twitter = new TwitterAPIExchange(array(
                'oauth_access_token' => ACCESS_TOKEN,
                'oauth_access_token_secret' => ACCESS_TOKEN_SECRET,
                'consumer_key' => CONSUMER_KEY,
                'consumer_secret' => CONSUMER_SECRET



     * setDatabase: Pass in a PDO connection, if you've already got one
     * @param $database PDO
    public static function setDatabase($database) {
        self::$DBH = $database;

     * tweet: Post a new status to Twitter
     * @param $message string
     * @access public
    public static function tweet($message = '') {

        if(empty($message)) {

        # Load the Twitter object
        if(is_null(self::$twitter)) {

        if(self::$library == 'TwitterOAuth') {
            echo $message;
            $response = $twitter->post('statuses/update', array('status' => $message));
            echo $response;
        } else {
            $url = '';
            $requestMethod = 'POST';
            $postData = array('status' => $message);
            $response = $twitter->buildOauth($url, $requestMethod)->setPostfields($postData)->performRequest();

        return $response['id'];


      * randomTweet: Send a random tweet from your database connection
      * @access public
     public function randomTweet() {

	 $status="Just Send this!";



Mukesh Yadav
Full Stack Developer

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Join our community to see this answer!
Unlock 1 Answer and 4 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 4 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros