2012-09-05 20 views
0

我運行該代碼和我得到以下信息:致命錯誤:調用一個成員函數API()非對象上

「致命錯誤:調用一個成員函數API()在非對象中「

它引用的行是我剛剛寫的地方global $facebook。 facebook對象在一個config.php文件中初始化,這個文件包含在我已經鏈接到的Database.php文件中。我研究了這個問題,看起來它是關於什麼時候你的$facebook被聲明在函數之外,並且你使用它內部沒有使其成爲全球。正如你所看到的,我已經把它變成了全球化,我甚至試圖做到不全球化 - 都會導致這種錯誤。

有誰知道爲什麼?

p.s.我什至不明白爲什麼它需要是全球性的,因爲如果config.php包含在我的Database.php文件中,並且包含在下面的代碼中,那麼是不是代碼範圍內的$ facebook對象?

<?php 
    include_once('../../Database.php'); 


    session_start(); // Start session for safety 

    // Retrieve the user's current shortlist of potential flatmates 
    $uid = $_SESSION['uid']; 
    $shortlistRes = getShortlist($uid); 

    global $link; 
    $shortlist = null; 
    while($r = mysqli_fetch_array($shortlistRes)) { 
     $shortlist[] = $r; 
    } 
    var_dump($shortlist); 
    // Create array of parameters you need 
    $parameters = array("pic_square"); 


    // Get id and picture of everyone on shortlist 

     $shortlistString = implode(",",$shortlist); 
     $fql = "SELECT uid, pic_link FROM user WHERE uid IN ($shortlistString)"; 
     global $facebook; 
     $shortlistFBInfo = $facebook->api(array(
      'method' => 'fql.query', 
      'query' => $fql 
     )); 
     print_r($shortlistFBInfo); 






    // Display Shortlist Page 
    //include_once('../View/shortlist_v.php'); 


    ?> 

回答

0
在你的代碼

無處你實際實例化$facebook變量 - 使用SDK發佈的示例代碼這樣做是這樣的:

require_once("facebook.php"); 

    $config = array(); 
    $config[‘appId’] = 'YOUR_APP_ID'; 
    $config[‘secret’] = 'YOUR_APP_SECRET'; 
    $config[‘fileUpload’] = false; // optional 

    $facebook = new Facebook($config); 
+0

嘿IGY - 我提到,有一個爲database.php文件它包含在頁面的頂部,它包含一個config.php文件,它初始化Facebook對象 - 所以在技術上它應該在這個範圍內! – user1058210

+0

我在PHP範圍上有點生疏,但我不認爲你應該需要將它聲明爲全局的,如果它包含在同一級別的另一個文件中 – Igy

相關問題