2017-03-09 43 views
-1

我試圖創建一個小的PHP腳本,拉低的是跟隨/在Twitter手柄朋友的人所有的用戶ID的列表,爲了這個,我現在用的https://twitteroauth.com一個函數中使用twitteroauth的

我當我單獨使用「朋友」或「追隨者」時,可以獲得id到文件本身,但是當我試圖將此腳本移動到函數時,我得到「致命錯誤:調用成員函數get()null」 (第19行)

錯誤觸發因爲該行

「$鳴叫= $ twitteroauth->的get($類型。 '/ IDS',一rray('screen_name'=> $ term,'cursor'=> $ next_cursor,'count'=> 50)); 「

正在使用的函數裏面...

我用作曲家和嘗試,並得到它的功能.. 2個主要文件是在外面工作

的index.php

#!/usr/bin/php 
<?php 

require __DIR__ . '/vendor/autoload.php'; 
use Abraham\TwitterOAuth\TwitterOAuth; 
require_once 'config.php'; 



// Pass in arguments 
if (PHP_SAPI === 'cli') { 
    $type = $argv[1]; 
    $term = $argv[2]; 

} 
else { 
    $type = $_GET['type']; 
    $term = $_GET['term']; 

} 

    switch ($type){ 
     case 'timeline': 
      include 'timeline.php'; 
     break; 
     case 'followers': 
     case 'friends': 
      include 'f.php';   

     break; 
     case 'ratelimit': 
      include 'ratelimit.php';   
     break; 
     case 'users_followers': 
     case 'users_friends': 
      include 'users.php';   
     break; 
     case 'all': 
     // include 'timeline.php'; 
      include 'f.php'; 
     break; 
    } 
?> 

而且f.php

<?php 

function getFrindsFollowers($term, $type){ 
     // create file to print follwer/friends id's to file 
     $file = "files/" . $term . '_' . $type . '.csv'; 
     // set empty content to file 
     $content = null; 

     // set previous cursor 
     $previous_cursor = 0; 
     $next_cursor = -1; 
     $loop_num = 0; 

      // While statment for followers or friends calls. 
      while($next_cursor != $previous_cursor && $loop_num < 15 && $next_cursor != 0){ 

       //use Abraham\TwitterOAuth\TwitterOAuth; 
       //$twitteroauth = new TwitterOAuth(consumer_key, consumer_secret, oauth_access_token, oauth_access_token_secret); 
       $tweets = $twitteroauth->get($type . '/ids', array ('screen_name' => $term, 'cursor' => $next_cursor, 'count' => 50)); 

       // Pause the loop for 16 min after every 15th request 
       if ($loop_num % 15 == 0 && $loop_num > 15) { 
        echo "sleep mode"; 
        sleep(960); 
        echo "sleep mode done"; 
       } 

       // set cursors 
       $previous_cursor = $next_cursor; 

       //echo 'Previous cursor is ' . $previous_cursor; 
       //echo '\n Next cursor is ' . $next_cursor; 

       foreach($tweets as $key => $val) { 

        if($key == "ids"){ 
         //echo $val[0]; 
         foreach($val as $value){ 
          $value . "\n"; 
          $content .= ",\n" . $value; 
         } 
        } 

        if($key == "next_cursor"){ 
         //echo "\n \n"; 
         $next_cursor = $val; 
        } 

       } 
       $loop_num ++; 
       echo "Type is now " . $type . "\n"; 
       echo "Loop is " . $loop_num . " for " . $type . "\n"; 
       file_put_contents($file, $content); 
     } 
} 
getFrindsFollowers($term, $type); 

?>

最有可能是一個簡單的修復,但將不勝感激關於如何在函數中使用get請求的任何指導。

回答

0

您在使用範圍的麻煩(http://php.net/manual/en/language.variables.scope.php

如果你已經具備的功能之外定義twitteroauth的變量,在它

global $twitteroauth; 

開始加入這一行這會給你訪問函數內部的變量。

+0

謝謝,請閱讀更多範圍:) – Fred

相關問題